P1147连续自然数和
洛谷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.
P1147连续自然数和的更多相关文章
- P1147 连续自然数和
P1147 连续自然数和 题目描述 对一个给定的自然数 M ,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为 M . Solution 两点问题 弄两个点 \(l,r\) , 因为前缀和 ...
- 洛谷——P1147 连续自然数和
P1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以 ...
- 洛谷 P1147 连续自然数和
洛谷 P1147 连续自然数和 看到dalao们的各种高深方法,本蒟蒻一个都没看懂... 于是,我来发一篇蒟蒻友好型的简单题解 #include<bits/stdc++.h> using ...
- 洛谷 P1147 连续自然数和 题解
P1147 连续自然数和 题目描述 对一个给定的自然数MM,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为MM. 例子:1998+1999+2000+2001+2002 = 100001 ...
- luogu P1147 连续自然数和 x
P1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以 ...
- 洛谷P1147 连续自然数和 [2017年6月计划 数论01]
P1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以 ...
- 洛谷P1147 连续自然数和 题解 枚举
题目链接:https://www.luogu.com.cn/problem/P1147 题目大意: 给你一个数 \(M\) ,求有多少对连续自然数对之和为 \(M\),输出这列连续自然数对的首项和末项 ...
- 洛谷 P1147 连续自然数和 Label:等差数列
题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个 ...
- P1147 连续自然数和(思维题)
题目描述 对一个给定的自然数MM,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为MM. 例子:1998+1999+2000+2001+2002 = 100001998+1999+2000 ...
随机推荐
- java中&与&&的区别
我想很多人在学习java的时候,或者面试时都会遇到 &和&& 然而,如果你没有真正的理解他们的意思,这会给你思路上面带来很大的麻烦 在这篇blog中,当你看完了以后,你会发现, ...
- view抖动效果
1.使用属性动画 ViewPropertyAnimator.animate(webView).translationX(20).setInterpolator(new CycleInterpolato ...
- NGUI之UILabel
重要属性说明 overflow: Shrink Content: 意味着内容会自动被缩小以便适应区域.它在你使用动态字体的同时使用Keep Crisp设置时有效,让字体变小,而不是缩放内容. ...
- hive基本操作
hive级联删除数据库和表 drop database t1 cascade; hive创建临时表和插入 create table t1 as select * from achi; insert i ...
- Aquarium Filtration
http://www.fishyou.com/aquarium-filtration.php Aquarium Filtration This section covers aquarium filt ...
- 使用gson解析,生成Json
包:gson-2.3.jarJson文本解析为Java对象:Java对象生成为Json文本 import com.google.gson.Gson; public class TestGson { c ...
- bash操作小结
刚开始学写bash脚本,发现有很多需要注意的细节问题,在这里记录一下便于记忆: 1. help test 帮助 2. bash提供的数组数据结构,它是以数字为下标的,和C语言从0开始的下一样 参考 ...
- VS调试技巧
下面有从浅入深的6个问题,您可以尝试回答一下 一个如下的语句for (int i = 0; i < 10; i++){if (i == 5)j = 5;},什么都写在一行,你怎么在j=5前面插入 ...
- kindeditor-4.1.7应用
页面: <script type="text/javascript" src="include/kindeditor/kindeditor.js"> ...
- NHibernate系列文章十八:NHibernate关系之一对多(附程序下载)
摘要 这篇文章介绍NHibernate最实用的内容:关系映射. NHibernate的关系映射方式有三种: Set:无序对象集合,集合中每一个元素不能重复. List:有序对象集合,集合中的元素可以重 ...