题目链接:http://poj.org/problem?id=1844
这个题目想到了两行代码,想不到就出不来
结论很简单,从1加到n,的和为sum,当sum比输入的k大,且sum-k为偶数时候满足
为什么是这样呢,因为当sum比k大的时候一定想着要把哪里的符号变成负,那么sum值就是sum-2*t(假设t前面变成负号)
显然是偶数,那么只要sum-k为偶数,那么一定可以通过变号使前面的值变成k
#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
using namespace std;
int main(){
int sum,i,j,k;
scanf("%d",&k);
sum=0;
i=1;
while(1){
sum+=i++;
if(sum>=k && (sum-k)%2==0){
printf("%d\n",i-1);
return 0;
}
}
return 0;
}
本文提供了一种简洁的解决方案来解答POJ 1844问题,通过判断累加和与目标值之差是否为偶数来确定解的存在,并给出了一段C++代码实现。
1374

被折叠的 条评论
为什么被折叠?



