由于数据只有(0-99)和1...10 googol,我们只要讲所有的单词写出来,统计出来即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int num[][26]={{1,2,6,10},{0,4,5,9},{3,7,8,40,50,60},{11,12,20,30,80,90},{15,16,70},{13,14,18,19,41,42,46,51,52,56,61,62,66},{17,21,22,26,31,32,36,44,45,49,54,55,59,64,65,69,81,82,86,91,92,96,100,200,600,1000}};
int len[7]={4,4,6,6,3,13,26};
int main()
{
int t,ans,n,m,i,tcase=1;
scanf("%d",&t);
while(t--)
{
printf("Case #%d: ",tcase++);
scanf("%d%d",&n,&m);
n-=3;
if(m>len[n])
{
printf("-1\n");continue;
}
ans=num[n][m-1];
printf("%d",ans);
if(ans>=100)for(i=0;i<98;i++)printf("0");
printf("\n");
}
return 0;
}