0 点赞 评论 收藏
分享
投递牛客等公司 >
0 点赞 评论 收藏
分享
汇太浪:出题人你好,这是我在E题中发现的一个小问题:
当输入的测试样例为
1
1 1 998 2000
时,正确答案应该是由数字1999得出的28,但是我的代码得出的是由数字999得出的27,而我的代码AC了,我的AC代码如下,AC了之后我才发现当start和end长度不一样时我的处理有问题
t = int(input())
for i in range(t):
l1,r1,l2,r2 = map(int,input().split())
res = 0
start = l1 + l2
end = r1 + r2
str_start = str(start)
str_end = str(end)
len_start = len(str_start)
len_end = len(str_end)
res1 = sum([int(x) for x in str(end)])
if start == end:
print(res1)
continue
elif len_start != len_end: # 这里有问题
cnt = 10**(len_end - 1) - 1
res2 = sum([int(x) for x in str(cnt)])
else:
for j in range(len_start):
if str_start[j] != str_end[j]:
cnt = end - end % 10**(len_end-1-j) - 1
res2 = sum([int(x) for x in str(cnt)])
break
print(max(res1,res2))
投递牛客等公司 >
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
关注他的用户也关注了: