就是一个数学题。。
通过求和公式,求出前n个和比k大的n的最小值,然后判断前n个数的和与k的值的差是否为偶数,如果为偶数则表示该n为最小的所需个数,因为如果差为偶数,则只需将前n个数的几个数前的符号改为减号,就可以得到k,如果不
#include <stdio.h>
int main()
{
int i,j,n,s,t,k,m;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
if(m<0)
{
m=-m;
}
s=0;
t=0;
while((s-m)<0)
{
t++;
s+=t;
}
while((s-m)%2)
{
t+=1;
s+=t;
}
if(m==0)
{
printf("3\n");
}
else
{
printf("%d\n",t);
}
if(n)
{
printf("\n");
}
}
return 0;
}
为偶数,则n的值加一,重复以上判断。直到出现符合以上判断的n的出现,则是最小的n的值。