• codevs1312连续自然数和


    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

    /*
    这么水的题都超时,基础不牢啊23333
    还是得下功夫抓基础
    别老想着拔高!!!! 
    去年NOIP犯的错误还没想着吗?!
    借此题给自己严重的警告!
    */
    #include<cstdio>
    
    int main()
    {
        int n,s,t;
        scanf("%d",&n);
        for(int i=1; i<n; i++)
        {
            s=n;
            t=i;
            while(s>0&&t<=n)
            {
                s=s-t;
                t++;
            }
            if(s==0) printf("%d %d
    ",i,t-1);
        }
    }
    //前缀和 
    
    #include<cstdio>
    #define lint long long
    using namespace std;
    
    lint s[1000009];
    
    int main()
    {
        int n,i,j;
        scanf("%d",&n);
        int m=(n+1)>>1;
        s[0]=0;
        for (i=1;i<=m;i++)
            s[i]=s[i-1]+i;
        i=0;j=1;
        while(i<=m&&j<=m)
        {
            if (s[j]-s[i]==n)
            {
                printf("%d %d
    ",i+1,j);
                i++;j++;
            }
            else if (s[j]-s[i]>n)
                i++;
            else 
                j++;
        }
        return 0;
    }

    还有一个数论做法,表示很弱看不懂.......0.0

    折花枝,恨花枝,准拟花开人共卮,开时人去时。 怕相思,已相思,轮到相思没处辞,眉间露一丝。
  • 相关阅读:
    通过set和waitOne来控制子线程的运行和停止
    一种控制线程运行和停止的方法
    C# 运用params修饰符来实现变长参数传递
    ref和out的区别
    C# 抽象类和接口的区别
    更有效率的使用Visual Studio(一)
    更有效率的使用Visual Studio(二)
    RS232串口用事件接受数据(一问一答)
    socket的异步回调函数,采用一问一答
    js去重方法
  • 原文地址:https://www.cnblogs.com/L-Memory/p/6362018.html
Copyright © 2020-2023  润新知