• 庞果网之高斯公式


    【题目】

    题目详情

    高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。如今问题在于给你一个正整数n,问你他能够表示为多少种连续正整数之和?(自身也算)。

    输入格式:

    多组数据,每组数据一行,一个正整数n。 0<n<2000000000

    输出格式:

    每组数据一行,包括一个正整数,表示结果。


    答题说明

    输入例子

    5

    120

    输出例子:

    2

    4

    解释:

    5=2+3=5

    120=1+2+...+15=22+23+24+25+26=39+40+41=120


    【分析】

    详细详见:点击打开链接

    【代码】

    /*********************************
    *   日期:2014-04-26
    *   作者:SJF0115
    *   题目: 高斯公式
    *   来源:http://hero.csdn.net/Question/Details?ID=537&ExamID=532
    *   结果:AC
    *   来源:庞果网
    *   总结:
    **********************************/
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int main(){
        int n,i;
        while(scanf("%d",&n) != EOF){
            int small = 1;
            int big = 2;
            int mid = (1 + n) / 2;
            int count = 0;
            int cur = small + big;
            while(small < mid){
                //cur = n
                if(cur == n){
                    count ++;
                }
                //cur > n
                while(cur > n && small < mid){
                    cur -= small;
                    small ++;
                    if(cur == n){
                        count++;
                    }
                }//while
                //cur < n
                big ++;
                cur += big;
            }//while
            printf("%d
    ",count+1);
        }
        return 0;
    }
    


  • 相关阅读:
    最长递增子序列
    Mit os Lab 2. Memory Management
    [ZZ]实现c协程
    Linux socket IO模型
    emacs简单入门
    令牌桶-流量控制
    GNU Makefile tips
    Linux atomic memory access
    [zz]Linux系统相关shell命令
    state thread
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3776231.html
Copyright © 2020-2023  润新知