为什么别人感觉很简单的问题我却感觉很难呢?首先变量i从1加到n,和为sum,当sum>=k且sum-k为偶数时为正确结果。
分析:当sum>=k时,说明1到n中有一个数前面要改成负号。但是改成负号后的sum1和sum什么关系呢?显然两者sum1<sum,而且相差一个偶数。而1到n中2、4、6....各种偶数都有,所以只要sum>=k而且sum-k为偶数时一定可以满足条件。
#include<iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
bool flag=n%2;
int sum=0,i;
for(i=1;;i++)
{
sum=i+sum;
if((sum%2==flag)&&(sum>=n))
{
break;
}
}
printf("%d\n",i);
}
return 0;
}