首页 / JAVA / 求连续正整数的和-Java
求连续正整数的和-Java
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了求连续正整数的和-Java,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含867字,纯文字阅读大概需要2分钟。
内容图文
![求连续正整数的和-Java](/upload/InfoBanner/zyjiaocheng/628/3dc163be2c5745419077481fb6cc424d.jpg)
算法训练 连续正整数的和
时间限制: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; } } } }
内容总结
以上是互联网集市为您收集整理的求连续正整数的和-Java全部内容,希望文章能够帮你解决求连续正整数的和-Java所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。