题意:
典型水题
思路:
打表
代码:
#include<stdio.h>
int a[500010],vis[50000010];
int main()
{
int k,S,most=0;
vis[0]=1;
while(scanf("%d",&k)!=EOF)
{
if(k==-1)
break;
for(int i=most+1; i<=k; i++)
{
a[i]=a[i-1]-i;
if(a[i]<=0||(a[i]>0&&vis[a[i]]==1))
a[i]=a[i]+2*i;
vis[a[i]]=1;
}
if(most<k)
most=k;
printf("%d\n",a[k]);
}
}