其他分享
首页 > 其他分享> > 牛客华为机试HJ95

牛客华为机试HJ95

作者:互联网

原题传送门

1. 问题描述

2. Solution

import sys

if sys.platform != "linux":
    sys.stdin = open("input/HJ95.txt")

nums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']

"""
拾、佰、仟、万、亿、元、角、分

3 2315 1121 .15
人民币
叁 亿
贰仟叁佰壹拾伍 万
壹仟壹佰贰拾壹 元
壹角 伍分



1 0012 .02
叁万
零
拾贰

15 1121 .15
人民币
拾伍万
壹仟壹佰贰拾壹元
壹角伍分

人民币叁仟零拾万伍仟零元整	
人民币叁仟零拾万伍仟元整

"""


def do_part(n, res: list):
    a = n % 10
    b = (n // 10) % 10
    c = (n // 100) % 10
    d = n // 1000
    if d != 0:
        res.append(nums[d])
        res.append('仟')
    elif res[-1] != "人民币":
        res.append('零')

    if c != 0:
        res.append(nums[c])
        res.append('佰')
    elif d != 0 and c == 0 and (b != 0 or a != 0):
        res.append('零')

    if b != 0:
        if b != 1 and res[-1] != "人民币":
            res.append(nums[b])
        res.append('拾')
    elif d != 0 and c != 0 and b == 0:
        res.append('零')

    if a != 0:
        res.append(nums[a])


def do_after_dot(n, res: list):
    a = n % 10
    b = n // 10

    if b != 0:
        res.append(nums[b])
        res.append('角')
    if a != 0:
        res.append(nums[a])
        res.append('分')


def solve(s):
    before_dot, after_dot = list(map(int, s.split(".")))

    res = ['人民币']
    a = before_dot % 10000  # 元部分
    b = (before_dot // 10000) % 10000  # 万部分
    c = before_dot // 100000000  # 亿部分

    if c > 0:
        do_part(c, res)
        res.append('亿')
    if b > 0:
        do_part(b, res)
        res.append('万')
    if a > 0:
        do_part(a, res)
        res.append('元')
    if after_dot == 0:
        res.append('整')
    else:
        do_after_dot(after_dot, res)
    print("".join(res))


for line in sys.stdin:
    solve(line.strip())

标签:10,do,nums,res,牛客,append,机试,HJ95,dot
来源: https://www.cnblogs.com/junstat/p/16177319.html