http://projecteuler.net/problem=17 [Answer:21124]

来源:互联网 发布:nginx 增加lua模块 编辑:程序博客网 时间:2024/05/21 03:25

#include <iostream>

using namespace std;

int main()
{
    int letters = 0;
    for ( int n = 1; n <= 1000; ++n )
    {
        if ( n >= 1000 )
        {
            letters += sizeof("one thousand") - 2;
        }

        switch ( n % 1000 / 100 )
        {
        case 0:
            break;
        case 1:
            letters += sizeof("one hundred") - 2;
            break;
        case 2:
            letters += sizeof("two hundred") - 2;
            break;
        case 3:
            letters += sizeof("three hundred") - 2;
            break;
        case 4:
            letters += sizeof("four hundred") - 2;
            break;
        case 5:
            letters += sizeof("five hundred") - 2;
            break;
        case 6:
            letters += sizeof("six hundred") - 2;
            break;
        case 7:
            letters += sizeof("seven hundred") - 2;
            break;
        case 8:
            letters += sizeof("eight hundred") - 2;
            break;
        case 9:
            letters += sizeof("nine hundred") - 2;
            break;
        default:
            break;
        }

        if ( (n % 1000 / 100 != 0) && (n % 100 != 0) )
        {
            letters += sizeof("and") - 1;
        }

        if ( (n % 100 >= 10) && (n % 100 <= 19 ) )
        {
            switch ( n % 100 )
            {
            case 10:
                letters += sizeof("ten") - 1;
                break;
            case 11:
                letters += sizeof("eleven") - 1;
                break;
            case 12:
                letters += sizeof("twelve") - 1;
                break;
            case 13:
                letters += sizeof("thirteen") - 1;
                break;
            case 14:
                letters += sizeof("fourteen") - 1;
                break;
            case 15:
                letters += sizeof("fifteen") - 1;
                break;
            case 16:
                letters += sizeof("sizteen") - 1;
                break;
            case 17:
                letters += sizeof("seventeen") - 1;
                break;
            case 18:
                letters += sizeof("eighteen") - 1;
                break;
            case 19:
                letters += sizeof("nineteen") - 1;
                break;
            default:
                break;
            }
        }
        else
        {
            switch ( n % 100 / 10 )
            {
            case 0:
                break;
            case 1:
                break;
            case 2:
                letters += sizeof("twenty") - 1;
                break;
            case 3:
                letters += sizeof("thirty") - 1;
                break;
            case 4:
                letters += sizeof("forty") - 1;
                break;
            case 5:
                letters += sizeof("fifty") - 1;
                break;
            case 6:
                letters += sizeof("sixty") - 1;
                break;
            case 7:
                letters += sizeof("seventy") - 1;
                break;
            case 8:
                letters += sizeof("eighty") - 1;
                break;
            case 9:
                letters += sizeof("ninety") - 1;
                break;
            default:
                break;
            }

            switch ( n % 10 )
            {
            case 0:
                break;
            case 1:
                letters += sizeof("one") - 1;
                break;
            case 2:
                letters += sizeof("two") - 1;
                break;
            case 3:
                letters += sizeof("three") - 1;
                break;
            case 4:
                letters += sizeof("four") - 1;
                break;
            case 5:
                letters += sizeof("five") - 1;
                break;
            case 6:
                letters += sizeof("six") - 1;
                break;
            case 7:
                letters += sizeof("seven") - 1;
                break;
            case 8:
                letters += sizeof("eight") - 1;
                break;
            case 9:
                letters += sizeof("nine") - 1;
                break;
            default:
                break;
            }
        }
    }

    cout << letters << endl;
    return 0;
}

原创粉丝点击