大神帮我看看为什么运行会崩溃!
题目描述有2N张纸牌,标号从1到2N。一次洗牌,可以将牌的排列改成n+1,1,n+2,2,...,n,2n。请问这样洗牌几次,可以让牌回到原始的状态。比如N=2时,1234->3142->4321->2413->1234 一共洗4次。
输入
每行输入一个整数N(1≤N≤10,000),N如果为0,表示输入结束,不需要处理。
输出
每行输出一个样例的结果。
#include<stdio.h>
#include<string.h>
int main()
{
int n;
int a[20001];
int b[20001];
char a1[20001];
char b1[20001];
int leep;
int i;
int k;
scanf("%d",&n);
while(n)
{
leep=0;
do
{
for(i=1; i<=2*n; i++)
{
a[i-1]=i;
a1[i-1]=a[i-1]+'0';
}
for(i=0,k=n; i<n; i++,k++)
{
b[2*(i+1)-1]=a[i];
b[i]=a[(k+1)];
}
for(i=1; i<=2*n; i++)
{
b1[i-1]=b[i-1]+'0';
}
leep++;
}while(strcmp(a1,b1)!=0);
printf("%d\n",leep);
scanf("%d",&n);
}
return 0;
}