zoukankan      html  css  js  c++  java
  • codevs 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

     

    #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
            可以算出x,再反过来验证和是不是等于m即可 
            */
            int x=(2*m/i-i+1)/2;
            if((2*x+i-1)*i/2==m&&x>0)
            printf("%d %d
    ",x,x+i-1); 
        }
        return 0;
    }
  • 相关阅读:
    第二周作业
    查找整数
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业
    7-2求最大值及其下标
  • 原文地址:https://www.cnblogs.com/dingmenghao/p/5640448.html
Copyright © 2011-2022 走看看