题目:很早以前有个很凶狠的奴隶主,以杀奴隶为乐。他有很多的奴隶,一天,他让37个奴隶围成一圈,编上号码(1~37),第一个奴隶从1开始数,数道5的那个人被杀掉,接下来后面的那个人又从1开始数数到5的那个人也被杀掉……最后剩下一个奴隶,这个奴隶可以活下来不杀,问最后是那个奴隶可以活下来?
代码:
#include<stdio.h>
int b[43]={0};
void func(int a[],int x)
{
int i,j,k=1;
for(i=1;i<43;i++)
{
if(i%5==0 && a[i+5]==0)
{
for(j=i+1;j<i+5;j++)
if(a[j]!=0)
{
b[k++]=a[j];
a[j]=0;
}
}
}
for(i=1;i<43;i++)
{
if(i%5==0)
{
x--;
continue;
}
else if(a[i]!=0)
b[k++]=a[i];
}
if(x>1)
func(b,x);
else if(x==1)
for(i=0;i<43;i++)
if(b[i]!=0)
printf(" %d",b[i]);
}
main()
{
int i,a[43]={0};
for(i=0;i<=37;i++)
a[i]=i;
func(a,37);
}
代码:
#include<stdio.h>
int b[43]={0};
void func(int a[],int x)
{
int i,j,k=1;
for(i=1;i<43;i++)
{
if(i%5==0 && a[i+5]==0)
{
for(j=i+1;j<i+5;j++)
if(a[j]!=0)
{
b[k++]=a[j];
a[j]=0;
}
}
}
for(i=1;i<43;i++)
{
if(i%5==0)
{
x--;
continue;
}
else if(a[i]!=0)
b[k++]=a[i];
}
if(x>1)
func(b,x);
else if(x==1)
for(i=0;i<43;i++)
if(b[i]!=0)
printf(" %d",b[i]);
}
main()
{
int i,a[43]={0};
for(i=0;i<=37;i++)
a[i]=i;
func(a,37);
}