连续整数固定和(C百例)
2015-07-13 00:09
393 查看
书上讲了一种提高效率的方法。原始算法:用i遍历1到n-1,如果i到j的和等于n那么就输出相应的结果。我们可以发现当sum(i,j)=n时,继续j++,sum+=j,计算的sum肯定是大于n的,于是便在sum(i,j)=n输出结果后,sum-=i,再继续sum+=j等后续工作,这样避免了无用功。
#include <iostream> #include<cstdio> using namespace std; void f(int x){ int i=1,j=2,sum=i; while(i<=x/2){ if(sum>=x)break; else if(sum<x){ for(;j<=x/2+1;j++){ sum+=j; if(sum==x){ printf("%d~%d\n",i,j); sum-=i; i++; if(i>x/2)break; } else if(sum>x){ do{ sum-=i; i++; if(sum==x){ printf("%d~%d\n",i,j); break; } else if(sum<x)break; }while(i<=x/2&&sum>x); } } } } } int main() { int n; while(cin>>n){ f(n); } return 0; }
相关文章推荐
- Linux发行版收藏
- Google将Material Design带到CSS、HTML与JavaScript上
- Maximum number of WAL files in the pg_xlog directory (2)
- 广义表的创建和遍历
- mysql数据双向同步实现
- Java线程:概念与原理
- 指针与引用
- 关于HTML5中拖放
- photoshop将psd导出div+css格式HTML(自动)
- POJ 3216 最小路径覆盖+floyd
- 这个头绪不对
- 生活一二事谈风险预防的重要性
- Lowest Common Ancestor of a Binary Search Tree
- struts (一)
- python简单获取数组元素个数的方法
- 浅谈PHP中output_buffering
- php简单判断两个字符串是否相等的方法
- php实现通过cookie换肤的方法
- PHP获取Exif缩略图的方法
- php里array_work用法实例分析