标签:输出 正整数 int 样例 ar 连续 Java 78
算法训练 连续正整数的和
时间限制:1.0s 内存限制:256.0MB
问题描述
78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。
输入一个正整数 n(< =10000)
输出 m 行(n有m种表示法),每行是两个正整数a,b,表示a+(a+1)+...+b=n。
对于多种表示法,a小的方案先输出。
样例输入
78
样例输出
1 12
18 21
25 27
---------
设n=78;
通常的想法是1+2==n?,不是
1+2+3==n?,不是
1+2+3+4==?,不是
.......直到78/2,结束;
那么100000呢?数越大就越耗时间;
而换成数组,往每i位==1~i的和,把这些数先填好,再遍历数组中a[i]-ar[i+1]位的差是否等于n即可,等于就输出i,j;
public static void main(String[] args) { Scanner in=new Scanner(System.in); int num=in.nextInt(); int ar[]=new int[num+1]; for(int i=1;i<=num;i++) { ar[i]=ar[i-1]+i; } for(int j=0;j<num-1;j++) { for(int k=j+1;k<=num;k++) { if(ar[k]-ar[j]==num) { System.out.println((j+1) + " " + k); }else if(ar[k]-ar[j]>num) { break; } } } }
标签:输出,正整数,int,样例,ar,连续,Java,78 来源: https://www.cnblogs.com/RorinL/p/13229150.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。