如果数字1到5用单词写出来:1、2、3、4、5,则总共使用3 + 3 + 5 + 4 + 4 = 19个字母。
如果用文字写出从1到1000(含1000)之间的所有数字,那么将使用多少个字母?
注意:不要计算空格或连字符。例如,342(三百四十二)包含23个字母,而115(一百一十五)包含20个字母。写出数字时使用“和”符合英国的用法。
#include<iostream>
#include<string.h>
using namespace std;
void main()
{
int a[1001];
int i,j,sum=0;
int b,c;
memset(a,0,sizeof(a));
a[0]=0;
a[1]=a[2]=a[10]=a[6]=3;
a[3]=a[8]=a[7]=a[40]=a[50]=a[60]=5;
a[4]=a[5]=a[9]=4;
a[12]=a[11]=a[20]=a[30]=a[80]=a[90]=6;
a[14]=a[13]=a[19]=a[18]=8;
a[15]=a[16]=a[70]=7;
a[17]=9;
a[1000]=11;
for(i=21;i<100;i++)//21-99
{
if(i%10!=0)
{
b=i/10;
b=b*10;
a[i]=a[b]+a[i%10];
}
}
for(i=1;i<10;i++)
a[i*100]=a[i]+7;//整百
for(i=101;i<1000;i++)
{
if(i%100!=0)
{
c=i/100;
c=c*100;
a[i]=a[c]+3+a[i%100];
}
}
for(i=1;i<=1000;i++)
sum+=a[i];
cout<<sum<<endl;
}