题目中写的是保证两个点的距离不超过 1018,然后我瞄了一眼这个题C++的提交都是3ms,感觉这个题可能涉及高精度就准备水一发Python。
结果:
print(abs(D(K,x1,y1)-D(K,x2,y2)))
80pts,WA4个点
扫了眼其他人python的提交记录:全是80pts,并且那几个点全是 WA 而不是 TLE(说明这个题没有卡py时间)
print(abs(D(K,x1,y1)-D(K,x2,y2))&0x7fffffffffffffff)
85pts,WA3个点
然后自己用C++重打了一遍,用的相同的思路,AC
最后:
ans=D(K,x1,y1)-D(K,x2,y2)
ans%=2**64
if ans>2**63:
print(2**64-ans)
else:
print(ans)
100pts,AC
原因:这个题数据并没有保证最终答案小于 1018,而题解中C++的都涉及了 3k−1×3k−1 操作,这个情况下在 k=38 的时候会爆 long long,如果出现不符合题目条件的数据,那么最后的答案就是错的。