题目链接:http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=394#problem/E

看似没有什么思路,静下心来就变的简单了,错了几次,每次都有不同收获!

代码:

#include <stdio.h>
int N,n;
long k;
void spa()
{ int ln=1;
if(k<0)
k=-k;
while(ln*(ln+1)/2<k)
ln++;
while((ln*(ln+1)/2-k)%2!=0||(ln*(ln+1)/2-k)/2>2*ln-1)
ln++;
n=ln;
}
int main()
{
int i;
scanf(“%d”,&N);
for(i=0;i<N;i++)
{
scanf(“%ld”,&k);
spa();
if(i==0)
printf(“%d\n”,n);
else
printf(“\n%d\n”,n);
}
return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation