题目大意
给出A和B两个数,现在要求将他们转换成N位小数的科学计数法,并问AB转换后是否相同
输入
每组包含一个测试用例,每个用例有一行 N , A , B N,A,B N,A,B。且 N < 100 N<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()