1312 连续自然数和

1312 连续自然数和

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题解

查看运行结果

题目描述 Description

对于一个自然数M,求出所有的连续的自然数段,使得这些连续自然数段的全部数字和为M.
eg:1998+1999+2000+2001+2002=10000,所以从1998到2002的一个自然数段为M=10000的一个解。

输入描述 Input Description

一个数M

输出描述 Output Description

每行两个数,为连续自然数段的一头一尾,所有输出行的第一个数按照升序排列

样例输入 Sample Input

10000

样例输出 Sample Output

18 142

297 328

388 412

1998 2002

数据范围及提示 Data Size & Hint

分类标签 Tags 点此展开

数论

数论拜拜,枚举大水题!

AC代码

#include<iostream>
using namespace std;
int main(){
    int m;cin>>m;
    for(int i=1;i<m;i++){
        int p=0;
        for(int j=i;p<m;j++){
            p+=j;
            if(p==m){
                cout<<i<<" "<<j<<"\n";
                break;
            }
        }
    }
    return 0;
}
时间: 2024-10-07 15:13:23

1312 连续自然数和的相关文章

codevs 1312 连续自然数和

#include<iostream> #include<cstdio> using namespace std; int main() { int m,i,j,k; scanf("%d",&m); for(i=m;i>=2;i--)//i枚举是多少连续个连续的数的和 { /* 设这i个连续的数第一个为x 则 这i个数为x x+1 x+2 ...... x+i-1 根据数学公式和为((x+x+i-1)*i)/2 令((x+x+i-1)*i)/2=m

luogu P1147 连续自然数和 x

P1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解. 输入输出格式 输入格式: 包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000). 输出格式: 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从

P1147 连续自然数和

题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解. 输入输出格式 输入格式: 包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000). 输出格式: 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定

luogu P1147 连续自然数和

题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解. 输入输出格式 输入格式: 包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000). 输出格式: 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定

将一个正整数表示为连续自然数的和

将一个正整数表示为连续自然数的和,比如给定整数15,那么根据题意,需要输出的连续自然数为1+2+3+4+5=4+5+6=7+8=15.题目中的连续自然数序列可以看做一个升序的有序数组,取数组前两个数为起始的区间的左右两个端点.对区间中的值进行累加,如果累加值小于给定的整数时,那么右端点向右移动,添加下一个数字,如果累加值大于给定的整数时,那么左端点向右移动,表示去掉最左端的最小值,如果值与给定整数相等,那么输出后,需要重新对定区间左右两个端点赋值,直到左端点的值小于 (number+1)/2.代

连续自然数和

题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解. 输入输出格式 输入格式: 包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000). 输出格式: 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定

1147 连续自然数和

难度:普及- 题目类型:简单数学问题 提交次数:1 涉及知识:简单数学问题 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解. 输入输出格式 输入格式: 包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000). 输出格式: 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个

找出最大连续自然数个数[Longest Consecutive Sequence in an Unsorted Array]

[本文链接] http://www.cnblogs.com/hellogiser/p/Longest-Consecutive-Sequence-in-an-Unsorted-Array.html [题目] 一个无序自然数数组,比如[100,2,1,3]求在0(n)时间复杂度内求出最大的连续自然数个数:输出应该是3 [分析] 方法一:排序可以采用一些排序方法比如基数排序.桶排序.记数排序等先进行排序.然后遍历一遍所有元素即可.当前这些排序有一些限制条件的. 方法二:维持一个hash表维持一个has

洛谷 P1147 连续自然数和 Label:等差数列

题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解. 输入输出格式 输入格式: 包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000). 输出格式: 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定