Problem 17 - How many letters would be needed to write all the numbers in words from 1 to 1000?
2008-07-17 22:12
579 查看
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.
First, I just want to write out the numbers in words as following.
Then, the result for this problem is out naturally. u can consult the logic in above code.
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.
First, I just want to write out the numbers in words as following.
// some numbers converted to letters is only one word. static String[] single = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; // the tens place static String[] tensPlace = { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; static String hun = " hundred"; static String thou = "one thousand"; public static String num2Eng(int num) { StringBuffer sb = new StringBuffer(); // if num equals 1000, return one thousand if (num == 1000) { return thou; } if (num / 100 > 0) { // if the number is larger than 100, the words should // start with *** hundred sb.append(single[num / 100] + hun); // if the last two digits is larger than 0, the if (num % 100 > 0) { // the words would be appended "and" sb.append(" and "); } } // if the last two digits is larger than 20 if (num % 100 >= 20) { // the word should be appended tens place, twenty, // thirty, forty and so on. sb.append(tensPlace[num / 10 % 10]); // if the last digit is lager than 0 if (num % 10 > 0) { // the word should be appended the word sb.append(" " + single[num % 10]); } } else if (num % 100 > 0) {// if the last two digits is // between 10 and 20,they are // single word. sb.append(single[num % 100]); } return sb.toString(); }
Then, the result for this problem is out naturally. u can consult the logic in above code.
private static int[] singleWord = { 4, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, 6, 6, 8, 8, 7, 7, 9, 8, 8 }; private static int[] tensPlaceWord = { 0, 0, 6, 6, 5, 5, 5, 7, 6, 6 }; private static int hunWord = 7; private static int thouWord = 11; public static int countLetters(int num) { int count = 0; if (num == 1000) { return thouWord; } if (num / 100 > 0) { count += singleWord[num / 100] + hunWord; if (num % 100 > 0) { count += 3; } } if (num % 100 >= 20) { // sb.append(tensPlace[num / 10 % 10]); count += tensPlaceWord[num / 10 % 10]; if (num % 10 > 0) { // sb.append(" " + single[num % 10]); count += singleWord[num % 10]; } } else if (num % 100 > 0) { // sb.append(single[num % 100]); count += singleWord[num % 100]; } return count; }
相关文章推荐
- 欧拉项目 Problem 17 of how many letters would be used?
- Problem 15 - Starting in the top left corner in a 20 by 20 grid, how many routes are there to the bottom right corner?
- FAQ How do I write to the console from a plug-in?
- FAQ How do I write to the console from a plug-in?
- How to get the password text in a text with password property from another process using C++ - 用C++如何从不同进程获取密码框文本
- How to solve problem caused when the CRT library and MFC libraries are linked in the wrong order
- using JS to control two select(html),the data can be loaded from database and XML,and show in the select
- How to solve the problem witch is the system send many emails when cron have something wrong
- How to solve "one or more projects in the solution were not loaded correctly" problem?
- How to change the language of oracle sqlplus from chinese to english in windows(如何将oracle sql plus中的中文变成英文版)
- There are n lockers in a hallway numbered sequentially from 1 to n. Initially, all the locker doors
- how to get the return value from a thread in python?
- Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
- What would be the closest equivalent in Java to a Micro ORM such as Dapper, PetaPoco, Massive or CodingHorror?
- This is probably a good time to review the order in which SELECT statement clauses are to be specified. Table 10.2 lists all the clauses we have learned thus far, in the order they must be used.
- [BetterExplained]How can we add the numbers from 1 to 100?
- How to use String.split() to get all the separate words including the delimit (Java)
- How to delete all email in the mail server using telnet & WCScript - 如何用 Telnet 删除邮件服务器上的所有邮件
- How To Implement The Decision Tree Algorithm From Scratch In Python (从零开始在Python中实现决策树算法)
- ZZ: How to remove 'Open in Windows Explorer' from the 'Actions Menu'