博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
projectEuler 17
阅读量:4968 次
发布时间:2019-06-12

本文共 1749 字,大约阅读时间需要 5 分钟。

将1……n的数表示成英文,求表示成这些英文的字母的和

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.

思想:

不是很喜欢这题,就是找规律1-19直接替换,然后20,30,40,50,60,70,80,90均有一个英文字符

当数字超过100且不是整数时,需要加上hundred和and10个字母

当数字超过100是整数时,值家hundred7个字母

当数字是1000时,直接的one thousand11个字母

如果有耐心,可以好好的统计规律,求和的时候都不需要迭代,可以一次计算出这个值,我没有那么多耐心,还是老老实实的循环

private static int[] num_letters = { 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, 6, 6, 8,            8, 7, 7, 9, 8, 8, 6, 6, 5, 5, 5, 7, 6, 6 };    private static int numLetters(int N) {        int result = 0, hun = N / 100 % 10, ten = N / 10 % 10, sin = N % 10;        if (hun > 0) {            result += num_letters[hun - 1] + 7; // 等于个位数hundred            if (ten > 0 || sin > 0)                result += 3;// 如果不是整百需加上'and'        }        if (ten == 1) {            result += num_letters[9 + sin];        } else {            if (ten > 1)                result += num_letters[17 + ten];            if (sin > 0)                result += num_letters[sin - 1];        }        return result;    }    private static int sumLetters(int N) {        int result = 0;        if (N == 1000) {            result += 11;            N--;        }        for (int i = 1; i <= N; i++) {            result += numLetters(i);        }        return result;    }
View Code

 

转载于:https://www.cnblogs.com/lake19901126/archive/2013/05/27/3102631.html

你可能感兴趣的文章
函数的形参和实参
查看>>
【TP SRM 703 div2 500】 GCDGraph
查看>>
MapReduce 重要组件——Recordreader组件 [转]
查看>>
webdriver api
查看>>
apache 实现图标缓存客户端
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>
linux系统的远程控制方法——学神IT教育
查看>>
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
hdfs 命令使用
查看>>
prometheus配置
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>