题目
源地址:
http://poj.org/problem?id=1844
理解
有这样两种情况:
- Sum(i) == S ,那么很明显 i 就是答案,直接输出即可。
- Sum(i) > S , 从 i 开始,依次往后面 +1 枚举 ,只要遇到 (Sum(i) - S) % 2 == 0 输出答案就可以了。
代码
#include<stdio.h>
const int maxn = 100000;
int main(int argc, char const *argv[])
{
int s;
while (scanf("%d", &s) != EOF)
{
int sum = 0;
int i;
for (i = 1; i < maxn; i++)
{
sum = (1 + i) * i / 2;
if (sum >= s) break;
}
int index = i;
for (;;)
{
sum = (1 + index) * index / 2;
if ((sum - s) % 2 == 0)
{
printf("%d\n", index);
break;
}
index++;
}
}
return 0;
}
更新日志
- 2014年08月05日 已AC。