PAT1 1060 Are They Equal

题目链接
我的github

题目大意

给出A和B两个数,现在要求将他们转换成N位小数的科学计数法,并问AB转换后是否相同

输入

每组包含一个测试用例,每个用例有一行 N , A , B N,A,B NAB。且 N &lt; 100 N&lt;100 N<100 A , B A,B A,B都非负不大于 1 0 100 10^{100} 10100

输出

对每个用例,如果AB相同就输出YES和转换后的数,如果不同就输出NO和转换后的AB

样例输入

3 12300 12358.9

3 120 128

样例输出

YES 0.123*10^5

NO 0.120*10^3 0.128*10^3

解析

直接将数用字符串去处理,处理的时候分别考虑是否为0是否大于1等情况

# -*- coding: utf-8 -*- 
# @Time : 2019/6/23 14:23 
# @Author : ValarMorghulis 
# @File : 1060.py
def trans(num, n):
    if float(num) < 1:
        if float(num) == 0:
            return "0." + '0' * n + "*10^0"
        else:
            tmp = str(int(num[2:]))
            return ("0." + tmp + '0' * n)[0:n + 2] + "*10^" + str(len(tmp) - len(num) + 2)
    else:
        if '.' not in num:
            num += '.0'
        for i in range(len(num)):
            if num[i + 1] == '.' or int(num[i]) > 0:
                break
        num = num[i:]
        t = num.find('.')
        num = num.replace('.', '')
        return ("0." + num + '0' * n)[0:n + 2] + "*10^" + str(t)


def solve():
    n, a, b = input().split()
    a = trans(a, int(n))
    b = trans(b, int(n))
    if a == b:
        print("YES " + a)
    else:
        print("NO " + a + ' ' + b)


if __name__ == "__main__":
    solve()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值