Problem 17

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;
}



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值