level 3
Only粉豆蛙
楼主
RT,新手,求教,先谢过。
#include<stdio.h>
#include<string.h>
//CodeBlocks下编译
int a[500001];
int b[10000000];//此数组长度是如何确定出的?
int k,i;
int main()
{
/*int a[500001];
int b[10000000];为什么以上定义放这就出错?(SIGSEGV错误)
*/
while (scanf("%d",&k)!=EOF&&k!=-1)
{
a[0]=0;
memset(b,1,sizeof(b));
for(i=1; i<=500000; i++)
{
if(a[i-1]>i&&b[a[i-1]-i])
{
a[i]=a[i-1]-i;
}
else
{
a[i]=a[i-1]+i;
}
b[a[i]]=0;
}
printf("%d\n",a[k]);
}
return 0;
}
2013年11月24日 12点11分
1
#include<stdio.h>
#include<string.h>
//CodeBlocks下编译
int a[500001];
int b[10000000];//此数组长度是如何确定出的?
int k,i;
int main()
{
/*int a[500001];
int b[10000000];为什么以上定义放这就出错?(SIGSEGV错误)
*/
while (scanf("%d",&k)!=EOF&&k!=-1)
{
a[0]=0;
memset(b,1,sizeof(b));
for(i=1; i<=500000; i++)
{
if(a[i-1]>i&&b[a[i-1]-i])
{
a[i]=a[i-1]-i;
}
else
{
a[i]=a[i-1]+i;
}
b[a[i]]=0;
}
printf("%d\n",a[k]);
}
return 0;
}