说实话,虽然这是道简单题,但是做完了让我有点恶心。
字符数组开的空间不要吝啬,我测了一下循环40次的结果,很长很长八万是我二分测试出来的,再开大点也没事。
注意,最后一个字符的特殊处理。
#include<cstdio>
#include<cstring>
char str[81000],tmp[81000];
int main(){
int d,n,i,j,cnt,k;
scanf("%d%d",&d,&n);
str[0]= d + '0';
str[1]='\0';
if(n==1){
puts(str);
return 0;
}
for(i=0;i<n-1;i++){
int len=strlen(str);
cnt=0,k=0;
char t=str[0];
for(j=0;j<len;j++){
if(str[j]==t){
cnt++;
if(j==len-1){ //是不是最后一个字符
tmp[k++]=str[j];
tmp[k++]=cnt+'0';
}
}else{
tmp[k++]=str[j-1];
tmp[k++]=cnt+'0';
if(j==len-1){ //是不是最后一个字符
tmp[k++]=str[j];
tmp[k++]=1+'0';
}
cnt=1;
t=str[j];
}
}
tmp[k]='\0';
strcpy(str,tmp);
}
puts(str);
return 0;
}