最后一个测试点源于没有考虑P, A的钱是一样的,输出格式应该为:0.0.0
思路:
我的思路是先构造两个函数,一个(假定为函数trans)是将 x.x.x的格式全部换算成最小单位 纳特(Knut)
另一个(假定为函数retrans)是将以最小单位纳特(Knut)计量的数转化为 x.x.x的格式;
之所以这样子做是因为
1.全部换算成最小单位十分方便计算
2.使用函数可以减少内存占用
现在开始代码实现:
1.编写函数trans()
由于进制是1-17-29
所以可以下面这个样子:
def trans(strg):
g, s, k = map(int, strg.split('.')) # 以.分隔
num = g * 17 * 29+ s * 29 + k # 进制换算
return num
2.编写函数retrans()
def retrans(num):
g = num // (17 * 29)
s = (num - g * 17 * 29) // 29
k = (num - g * 17 * 29 - s * 29)
strg = '.'.join([str(g), str(s), str(k)]) # 以.连接列表各元素
return strg
3.接收数据-数据处理
p, a = input().split() p_t, a_t = trans(p), trans(a)
4.数据输出(判断二者是否相等)
if p_t < a_t:
print(retrans(a_t - p_t))
elif p_t > a_t:
print('-' + retrans(p_t - a_t))
else:
print('0.0.0')
5.完整代码如下:
def trans(strg):
g, s, k = map(int, strg.split('.'))
num = g * 17 * 29+ s * 29 + k
return num
def retrans(num):
g = num // (17 * 29)
s = (num - g * 17 * 29) // 29
k = (num - g * 17 * 29 - s * 29)
strg = '.'.join([str(g), str(s), str(k)])
return strg
p, a = input().split()
p_t, a_t = trans(p), trans(a)
if p_t < a_t:
print(retrans(a_t - p_t))
elif p_t > a_t:
print('-' + retrans(p_t - a_t))
else:
print('0.0.0')



