zoukankan      html  css  js  c++  java
  • Project Euler Problem 17 Number letter counts

    Number letter counts

    Problem 17

    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.


    C++:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    const int TWENTY = 20;
    const int HUNDRED = 28;
    const int ONE_THOUSAND = 29;
    
    string number[] = {"", "one", "two", "three",  "four", "five", "six", "seven", "eight", "nine",
        "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
        "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", "hundred and", "one thousand"};
    
    int main()
    {
        int sum=0, sum2=0;
    
        // 1 - 19
        sum2 = 0;
        for(int i=1; i<=19; i++)
            sum2 += number[i].length();
        sum += sum2;
    
        // 20 - 99
        sum2 = 0;
        for(int i=20; i<=99; i++) {
            int d10 = i / 10, d0 = i % 10;
            sum2 += number[TWENTY + d10 - 2].length();
            if(d0 != 0)
                sum2 += number[d0].length();
        }
        sum += sum2;
    
        // 100 - 999
        sum2 = 0;
        for(int i=1; i<=9; i++) {
            sum2 += (number[i].length() + number[HUNDRED].length() - 1) * 100 - 3;
            sum2 += sum;
        }
        sum += sum2;
    
        // 1000
        sum += number[ONE_THOUSAND].length() - 1;
    
        cout << sum << endl;
    
        return 0;
    }




  • 相关阅读:
    [字符串] 洛谷 P2264 情书
    [IDA*] 洛谷 P2324 骑士精神
    [Tarjan] 洛谷 P2746 校园网
    [dp][瞎搞] 洛谷 P2501 数字序列
    [虚树][lca][dfs] 洛谷 P3233 世界树
    [斜率优化][dp] 洛谷 P3648 序列分割
    [带修莫队] Bzoj 2120 数颜色
    [数学][组合数] Jzoj P4257 着色
    [贪心][前缀和] Jzoj P4256 平均数
    [dfs] 洛谷 P2535 收集资源
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564003.html
Copyright © 2011-2022 走看看