Problem
If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?
NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.
Code
#include <iostream>
#include <vector>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
vector<string> numInTen;
numInTen.push_back("one");
numInTen.push_back("two");
numInTen.push_back("three");
numInTen.push_back("four");
numInTen.push_back("five");
numInTen.push_back("six");
numInTen.push_back("seven");
numInTen.push_back("eight");
numInTen.push_back("nine");
numInTen.push_back("ten");
vector<string> numOutTenInTwenty;
numOutTenInTwenty.push_back("eleven");
numOutTenInTwenty.push_back("twelve");
numOutTenInTwenty.push_back("thirteen");
numOutTenInTwenty.push_back("fourteen");
numOutTenInTwenty.push_back("fifteen");
numOutTenInTwenty.push_back("sixteen");
numOutTenInTwenty.push_back("seventeen");
numOutTenInTwenty.push_back("eighteen");
numOutTenInTwenty.push_back("nineteen");
vector<string> numWithTY;
numWithTY.push_back("twenty");
numWithTY.push_back("thirty");
numWithTY.push_back("forty");
numWithTY.push_back("fifty");
numWithTY.push_back("sixty");
numWithTY.push_back("seventy");
numWithTY.push_back("eighty");
numWithTY.push_back("ninety");
string hundred("hundred");
long count = 0;
for (int i = 1; i != 1000; i++)
{
/*if (i%100 == 0)
{
system("PAUSE");
}*/
cout << i << ":";
int temp = i;
if (temp > 1000)
{
cout << "more than 1000, break" << endl;
}
if (temp/100 > 0)
{
cout << numInTen[temp/100-1] << " ";
count += numInTen[temp/100-1].size();
cout << hundred << " ";
count += hundred.size();
if (temp%100 != 0)
{
count += 3;//add "and"
cout << "and" << " ";
}
temp %= 100;
}
if (temp/10 > 1)
{
count += numWithTY[temp/10-2].size();
cout << numWithTY[temp/10-2] << " ";
temp %= 10;
if (temp != 0)
{
count += numInTen[temp%10-1].size();
cout << numInTen[temp%10-1] << " ";
}
}
else if (temp/10 == 1)
{
if (temp%10 == 0)
{
count += numInTen[9].size();
cout << numInTen[9] << " ";
}
else
{
count += numOutTenInTwenty[temp%10-1].size();
cout << numOutTenInTwenty[temp%10-1] << " ";
}
}
else if (temp != 0)
{
temp %= 10;
count += numInTen[temp%10-1].size();
cout << numInTen[temp%10-1] << " ";
}
cout << endl;
}
cout << count << endl;
count += strlen("onethousand");
cout << count << endl;
}