题目链接:
http://acm.split.hdu.edu.cn/showproblem.php?pid=5867
简单的模拟题目。
下面是AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[22]= {0,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,7,9,8,8,6};
int b[1005];
int num[1005];
void init()
{
b[20]=6,b[30]=6,b[40]=5,b[50]=5,b[60]=5,b[70]=7,b[80]=6,b[90]=6,b[100]=7;
int sum=0;
for(int n=0; n<=1000; n++)
{
if(n<=10)
{
sum+=a[n];
num[n]=sum;
continue;
}
if(n==1000)
{
sum+=11;
num[n]=sum;
continue;
}
int n1=n/100;
int n2=n%100;
if(n2==0)
{
sum+=(a[n1]+b[100]);
num[n]=sum;
continue;
}
if(n2<=20)
{
if(n1==0)
{
sum+=a[n2];
num[n]=sum;
}
else
{
sum+=(a[n2]+3+a[n1]+b[100]);
num[n]=sum;
}
}
else
{
int n3=n2%10;
n2=(n2/10)*10;
if(n1==0)
{
sum+=(b[n2]+a[n3]);
num[n]=sum;
}
else
{
sum+=(b[n2]+a[n3]+3+a[n1]+b[100]);
num[n]=sum;
}
}
}
}
int main()
{
int nn,t;
scanf("%d",&t);
init();
while(t--)
{
scanf("%d",&nn);
printf("%d\n",num[nn]);
}
return 0;
}