洛谷1147 连续自然数和

题目描述

对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M。

例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。

输入输出格式

输入格式:

包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000)。

输出格式:

每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。

输入输出样例

输入样例1:

combo.in

10000

输出样例1:

combo.out

18 142

297 328

388 412

1998 2002

洛谷1147



在学校机房写的

把在学校的思路写下

首先,第一个想的是枚举,但是明显会TLE,于是我先列了下

ANS=i+i+1+i+2+...+i+j

=ij+1+2+...+j

然后把1+..+j存储到数组f[j]中,那么就可以得到:

ANS=ij+A[j]

这个应该是哈希表吧?

于是得到程序

program	p1147;
type
LL=longint;
var
j,n,i:LL;
f:array[0..2020]of LL;
procedure init;
var
i:LL;
begin
f[0]:=0;
for i:=1 to 2000 do f[i]:=f[i-1]+i;
end; begin
assign(input,'p1147.in');
assign(output,'p1147.out');
reset(input);
rewrite(output);
readln(n);
init;
for i:=1 to n div 2 do
begin
j:=round(n/i);
if j>2000 then j:=2000;
while j>0 do
begin
if f[j-1]+j*i=n
then begin
if i=1 then begin
writeln(0,' ',i+j-1);
writeln(1,' ',i+j-1);
end
else writeln(i,' ',i+j-1);
break;
end;
dec(j);
end;
end;
close(input);
close(output);
end.

最新文章

  1. 在OS X中使用Homebrew
  2. Web:AJAX的网络请求
  3. [WinForm]平均切割图片AvgCutImage
  4. API指南----application
  5. some smart
  6. java10 WeakHashMap
  7. Java调用R——rJava的安装和配置
  8. Python初探
  9. 2013 ACM/ICPC Asia Regional Hangzhou Online hdu4739 Zhuge Liang&#39;s Mines
  10. 【linux之进程管理,系统监控】
  11. matplotlib图例-【老鱼学matplotlib】
  12. Zephyr学习(五)线程和调度
  13. 4.HTML+CSS制作个月亮
  14. 第四届CCF软件能力认证
  15. 媒体文件audio 转 base64 编码 (利用 FileReader &amp; Audio 对象)
  16. 《转》win7 安装ujson 出现的“error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27”
  17. java中Scanner类nextInt之后用nextLine无法读取输入
  18. Ushare共享流媒体
  19. [c# 20问] 1. 何时使用class与struct
  20. MySQL 8.0复制性能的提升(翻译)

热门文章

  1. PHP上传大文件 分割文件上传
  2. Windows下运行python脚本报错“ImportError: No Module named ...”的解决方法
  3. (String)将一个String里面的单词反转
  4. NSIS打包(一)常用概念简介
  5. 11. Evaluate Reverse Polish Notation
  6. iOS开发编译报错、常见问题(实时更新)
  7. android 程序开机自启动
  8. oracle分配权限:一个用户访问另一个用户的表
  9. apache相关
  10. c++学习笔记——字面值常量类