时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output "Fu" first if it is negative. For example, -123456789 is read as "Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu". Note: zero ("ling") must be handled correctly according to the Chinese tradition. For example, 100800 is "yi Shi Wan ling ba Bai".
输入描述:
Each input file contains one test case, which gives an integer with no more than 9 digits.
输出描述:
For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line.
输入例子:
-123456789
输出例子:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
这题首先要把中文的数字读法学好!
注意以下几个实例判断
1. 100000001
2. 10301234
3. 100001234
4. 100000000
python代码如下:
num = ['ling', 'yi', 'er', 'san', 'si', 'wu', 'liu', 'qi', 'ba', 'jiu']
k = ['ling', 'Shi', 'Bai', 'Qian', 'Wan', 'Shi', 'Bai','Qian','Yi']
def rankid(number):
rank = []
a = tstr(number)
rank.append(a)
return rank[0]
# 取整取余并连接,返回连接好的字符串和余数
def turn(x, y):
if y >= 1:
a = x // pow(10, y)
b = x % pow(10, y)
c = num[a] +' '+ k[y]
if y > 4 and b < pow(10, 4):
if (len(str(x)) - len(str(b))) > 4 :
if b!=0:
c += ' ' + k[0]
else:
c += ' '+k[4]
if (len(str(x)) - len(str(b))) >= 2 and (len(str(x)) - len(str(b))) <= 4 \
and b != 0 and len(str(b))!=4 and len(str(b))!=8:
c += ' '+k[0]
else:
a = x
b = 0
c = num[a]
return (c, b,)
# 调用上一个函数,以保证进行完所有的数并返回
def tstr(x):
c = turn(x, (len(str(x)) - 1))
a = c[0]
b = c[1]
while b != 0:
a += ' '+turn(b, (len(str(b)) - 1))[0]
b = turn(b, (len(str(b)) - 1))[1]
return a
number=int(input())
if number<0:
number=-number
ranki = rankid(number)
ranki='Fu '+ranki
print(ranki.strip())
else:
ranki = rankid(number)
print(ranki.strip())