问题描述
题目详情高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。输入格式:多组数据,每组数据一行,一个正整数n。0<n<2000000000输出格式:每组数据一行,包含一个正整数,表示结果。答题说明输入样例5120输出样例:24解释:5=2+3=5120=1+2+...+15=22+23+24+25+26=39+40+41=120importjava.util.Scanner;publicclassTestTwo{publicstaticvoidmain(Stringargs[]){Scannerin=newScanner(System.in);while(true){inta,b;a=in.nextInt();if(a%2==0){b=a/2;}else{b=(a+1)/2;}inty=1;for(inti=1;i<b;i++){intx=0;for(intj=i;x<a;j++){x=x+j;}if(x==a){y=y+1;}}System.out.println(y);}}}
求指教
解决方案
解决方案二:
这样不知道对不对啊Scannerin=newScanner(System.in);while(true){inta,b;a=in.nextInt();//奇偶判断if(a%2==0){b=a/2;}else{b=(a+1)/2;}inty=1;for(inti=1;i<=b;i++){Strings1="";inttempSum=0;for(intj=i;j<=b;j++){s1+=j+"+";tempSum+=j;if(tempSum==a){System.out.println(a+"="+s1.substring(0,s1.length()-1));y++;break;}}}System.out.println(y);}
解决方案三:
如果你是在OJ上做题的话,类名要是Main而且多组输入时也要注意一下importjava.util.Scanner;publicclassMain{publicstaticvoidmain(Stringargs[]){Scannerin=newScanner(System.in);while(in.hasNext()){inta,b;a=in.nextInt();if(a%2==0){b=a/2;}else{b=(a+1)/2;}inty=1;for(inti=1;i<b;i++){intx=0;for(intj=i;x<a;j++){x=x+j;}if(x==a){y=y+1;}}System.out.println(y);}}}