我来写一个超时版本:
#include<stdio.h>
#include<string.h>
int main()
{
char A[110],B[110];
while(gets(A)){
int i,j,n=strlen(A),cnt=0;
for(i=0;i<n;i++)B[i]='0';
while(strcmp(A,B)!=0)
{
B[n-1]++;
for(j=n-1;j>0;j--)
{
if(B[j]=='1'||B[j]=='2')cnt++;
if(B[j]>'9')
{
B[j-1]++;
B[j]-=10;
}
}
if(B[0]=='1'||B[0]=='2')cnt++;
}
printf("%d\n",cnt%20123);
for(i=0;i<n;i++)B[i]=A[i]='\0';}
return 0;
}