#include<iostream>
#include<string.h>
using namespace std;
int a[105],b[5];
void Init(){
memset(a,0,sizeof(a));
a[1]=a[2]=a[6]=a[10] = 3;
a[4]=a[5]=a[9] = 4;
a[3]=a[7]=a[8]=a[40]=a[50]=a[60] = 5;
a[11]=a[12]=a[20]=a[30]=a[80]=a[90] = 6;
a[15]=a[16] = a[70] = 7;
a[13]=a[14]=a[18]=a[19] = 8;
a[17] = 9;
}
int getLength(int num){
return a[num];
}
int getNum(int num){
if(num==1000){
return 11;
}
int length=0;
int temp=num,i=1;
memset(b,0,sizeof(b));
while(temp>0&&i<4){
b[i] = temp%10;
i++;
temp=temp/10;
}
if(b[2]<2){
length += getLength(b[2]*10+b[1]);
}else{
length +=(getLength(b[2]*10)+getLength(b[1]));
}
if(b[3]>0){
if(length>0){
length += 10;
}else{
length += 7;
}
length +=getLength(b[3]);
}
return length;
}
int main()
{
int ans=0;
Init();
for(int j=1;j<=1000;j++){
ans+=getNum(j);
}
cout<<ans<<endl;
return 0;
}
答案:21124