poj-2140
来源:互联网 发布:linux创建文件目录 编辑:程序博客网 时间:2024/06/06 07:26
//132K110MSC++#include <cstring>#include <cstdio>using namespace std;int N;long long cnt;void solve(int N) {int begin = 1;int end = 1;long long sum = 1;while(1) {if (begin > N) {break;}// if (begin == N) {// if (sum == N) {// cnt++;// }// break;// }if (sum == N) {cnt++;sum -= begin;begin++;} else if (sum > N) {sum -= begin;begin++;} else if (sum < N) {if (end == N) {break;} else {end++;sum += end;}}}printf("%lld\n", cnt);}int main(){while(scanf("%d", &N) != EOF) {cnt = 0;solve(N);}return 0;}
类似于一个伸缩数组,begin 和 end代表当前被选取的数的范围, 同时维护一个sum来标示当前选择的数的大小,
如果对于某个数N:
如果 N== sum, 那么就是一种组合方案,先将beign+1,并从sum中减去 begin,
如果 N > sum, 那么也是 begin前进一位, sum减去 begin
如果 N < sum, 那么 end前进一位, sum加上 end+1,
两种情况结束:
<1> sum < N. 但是 end已经到了 N(其实这种情况不可能出现)
<2> begin > N.
0 0
- poj 2140
- POJ 2140
- poj-2140
- POJ 2140 Herd Sums
- poj 2140 Herd Sums
- POJ 2140 Herd Sums
- poj 2140 Herd Sums
- POJ 2140 解题报告
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- Hdu-5024 Wang Xifeng's Little Plot(记忆化搜索)
- 微博的分享,可以分享任何东西。 各种微博
- 错误 1 error C2065: "endl": 未声明的标识符
- Java - 基础增强 - 增强for - 可变参数 - 枚举 - 反射 - 内省 - 泛型
- 自我反省(一)
- poj-2140
- 你为你的机会准备了什么
- ZOJ Problem Set - 1188 DNA Sorting
- 判断子序列、求最长公共子序列算法实现
- tomcat 卡死 Initializing Spring root WebApplicationContext
- Xcode6编译SDWebImage报错解决方法(SDWebImageDownloaderOperation.m错误)
- HDU 2.1.1最小公倍数
- sdut 3-1 Point类的构造函数
- 美团二面经验