| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
确实要考虑数字的个数大于十的情况啊。(附代码)#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str[81],ch[81],str1[81],sh[17][81];
int i,j,leng,b[10],count,flag;;
while(1)
{
for(i=0;i<17;i++)
for(j=0;j<81;j++)
sh[i][j]='\0';
for(i=0;i<81;i++)
ch[i]='\0';
memset(b,0,sizeof(b));
scanf("%s",str);
strcpy(str1,str);
if(strcmp(str,"-1")==0)
break;
strcpy(sh[0],str);
for(count=1;count<=15;count++)
{
memset(b,0,sizeof(b));
leng=strlen(str);
for(i=0;i<leng;i++)
b[str[i]-'0']++;
j=0;
for(i=0;i<10;i++)
{
if(b[i]!=0)
{
if(b[i]>9)
{
ch[j++]=b[i]/10+'0';
ch[j++]=b[i]%10+'0';
ch[j]=i+'0';
}
else
{
ch[j++]=b[i]+'0';
ch[j]=i+'0';
}
j++;
}
}
strcpy(sh[count],ch);
if(strcmp(ch,str)==0)
{
if(count==1)
printf("%s is self-inventorying\n",str1);
else
printf("%s is self-inventorying after %d steps\n",str1,count-1);
break;
}
flag=0;
for(i=0;i<count;i++)
{
if(strcmp(ch,sh[i])==0)
{
printf("%s enters an inventory loop of length %d\n",str1,count-i);
flag=1;
break;
}
}
if(flag==1)
break;
strcpy(str,ch);
for(i=0;i<81;i++)
ch[i]='\0';
}
if(count==16)
printf("%s can not be classified after 15 iterations\n",str1);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator