zoukankan      html  css  js  c++  java
  • CSDN编程挑战——《高斯公式》

    高斯公式

    题目详情:

    高斯在上小学时发明了等差数列求和公式: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



    初稿代码:

    /*
    	3:	3、1+2=3
    	4:      4、
    	5:	5、2+3=5
    	6:	6、1+2+3=6 
    	7:     7、3+4=7 
    	8:	8、
    	9:	9、4+5=9、2+3+4=9
    	10:    10、1+2+3+4=10 	
    	
    	分析: 
    		输入n
    		设 s,x (x个从s開始连续的数相加等于n,比如 :10=1+2+3+4中 n:10 s:1 x=4)
    		于是有求和公式:  
    			(s+(s+x-1)) 
    			----------- * x = n
    				2 
    		依据求和公式暴力就可以求解 
    */	
    #include "stdio.h"
    #include "math.h"
    int main()
    {
    	int count;
    	long long x,n;
    	while(scanf("%I64d",&n)!=EOF)
    	{
    		count=1; 
    		for(x=2;x<n;x++){
    			double s=(n+(x-x*x)/2.0)/x;
    			if(s>=1){
    				if(floor(s+0.5)==s){	//推断 s 为整数 
    					printf("%d > x:%I64d s:%d
    ",count+1,x,(int)s);
    					count++;
    				}else{
    					printf("%d,%lf不整除!
    ",x,s);
    				}				
    			}else{
    				printf("最多不超过%d个数相加!
    ",x); 
    				break;
    			}
    		}
    		printf("result:%d
    ",count);
    		break;
    	} 
    	return 0;
    } 


    AC后代码:

    #include "stdio.h"
    #include "math.h"
    int main()
    {
    	int count;
    	long long x,n;
    	while(scanf("%I64d",&n)!=EOF)
    	{
    		double s=n;
    		for(count=0,x=2;s>=1;x++){
    			if(floor(s+0.5)==s)	{
    				count++;
    			//	printf("%d >  x:%d  s:%d
    ",count,x-1,(int)s);
    			}
    			s=(double)n/x+(1-x)/2.0;						
    		}
    		printf("%d
    ",count);
    	//	break;
    	} 
    	return 0;
    }

    注意:程序中数据类型为 int 对照较大的数据计算过程中可能会溢出

    CSDN挑战编程交流群:372863405                 



  • 相关阅读:
    echarts饼状图位置设置
    去除echarts饼状图的引导线
    VS2008里的代码如何格式化
    使用ADO如何获得SQLSERVER 2K的数据库名的列表
    CStdioFile.WriteString无法向文件写入中文
    使用ODBC 数据库 ,运行程序时 出现 “遇到不适当的参数”
    CListCtrl消息及解释
    VC的CListCtrl控件
    找不到Microsoft Access Driver(*.mdb)ODBC驱动程序的安装例程。请重新安装驱动
    WebBrowser 控件-说明
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5158063.html
Copyright © 2011-2022 走看看