题目链接: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;
}