http://acm.hdu.edu.cn/showproblem.php?pid=4148
找规律,后一项描述前一项每一段有多少连续的相同数字。
ps:算到30项,总共的长度也不小了,开始s数组开小了,一直运行出错,郁闷好一会
View Code
#include <stdio.h> #include <string.h> #include <stdlib.h> char s[40][11000]; int main() { int n,i,j; int cnt,f; s[1][0]='1'; s[1][1]='\0'; for(i=2;i<31;i++) { cnt=1; f=0; for(j=0;j<strlen(s[i-1]);j++) { if(s[i-1][j]==s[i-1][j+1])cnt++; else{ s[i][f]=cnt+'0'; s[i][++f]=s[i-1][j]; f++; cnt=1; } s[i][f]='\0'; } } while(scanf("%d",&n),n) { int len=strlen(s[n]); printf("%d\n",len); } return 0; }