华为oj 学英语

来源:互联网 发布:php是做前端还是后端 编辑:程序博客网 时间:2024/05/16 16:37

直接copy别人的感觉他的程序很直观很好理解,具体那位大神的链接忘了,勿怪!

注意事项:

对于什么时候加‘and’请注意!

举个例子 110 ------ one hundred and ten 

101 ------ one hundred and one

1001 ------ one hundred one

#include <iostream>#include <string>using namespace std;string s1[20] = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };string s3[10] = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };string lessThan100(long num){string result;if (num < 20)result = s1[num - 1];else if (num <100 && num % 10 == 0)result = s3[num / 10 - 2];else if (num <100)result = s3[num / 10 - 2] + " " + s1[num % 10 - 1];return result;}string lessThan1000(long num){string result;if (num < 100)result = lessThan100(num);else if (num % 100 == 0)result = s1[num / 100 - 1] + " hundred";elseresult = (s1[num / 100 - 1] + " hundred and " + lessThan100(num % 100));return result;}string lessThanMillion(long num){string result;if (num < 1000)result = lessThan1000(num);else if (num % 1000 == 0)result = lessThan1000(num / 1000) + " thousand";elseresult = lessThan1000(num / 1000) + " thousand " + lessThan1000(num % 1000);return result;}string lessThanBillion(long num){string result;if (num <1000000)result = lessThanMillion(num);else if (num % 1000000 == 0)result = lessThanMillion(num / 1000000) + " million";elseresult = lessThanMillion(num / 1000000) + " million " + lessThanMillion(num % 1000000);return result;}string parse(long num){string result;if (num <= 0 || num >= 10000000000)result = "ERROR";else if (num < 1000)result = lessThan1000(num);else if (num < 1000000)result = lessThanMillion(num);else if (num <1000000000)result = lessThanBillion(num);else if (num == 1000000000)result = "one billion";elseresult = s1[num / 1000000000 - 1] + " billion " + lessThanBillion(num % 1000000000);return result;}int main(){long num = 0;cin >> num;cout << parse(num);return 0;}

结论 这种分而治之的方法很好用,而且思路很清晰!!!

0 0