#include char s[100]; long long sol; int sl; long long cut[100]; int base,kde,i; int validbase(int st, int fi) { if (st==fi) { if (s[st]<='1') return 0; return 1; } if (s[st]=='0') return 0; return 1; } int validnum(int st, int fi) { int i; if (st==0) if (fi==0) if (s[0]=='0') if (fi (sl-1-base)) return 0; for (i=0;i<=fi-st;i++) { if (s[fi+i] < s[base+i]) return 2; if (s[fi+i] > s[base+i]) return 0; } return 0; } int main(void){ while (1) { scanf("%s ",s); if (s[0]=='#') break; sol=0; sl=strlen(s); for (base=1;base=0;i--) { if (validnum(i,kde-1)) { cut[kde]+=cut[i]; } } } sol+=cut[base]; } if (sol) { printf("The code %s can represent %lld numbers.\n",s,sol); } else { printf("The code %s is invalid.\n",s); } } return 0; }