为何超时 --java D题

BigInteger b1 = new BigInteger(next());
BigInteger b2 = new BigInteger(next());
out.println(b2.gcd(b1.mod(b2)));
全部评论
Java中大数BigInteger类的gcd方法底层是欧几里得算法 理论上是最优算法   时间复杂度为O((log(max(a, b)))^2) 但是 BigInteger的运算需要考虑到操作数的位数,特别是在位数相差较大时,性能可能稍有影响。 如果两个大整数 a 和 b 的位数相等,那么时间复杂度可以接近 O(log(a)),其中 a 是位数。 如果两个大整数的位数不相等,BigInteger会执行多次模运算和移位操作来逐步减小问题规模,这些操作可能需要多次迭代,导致时间复杂度稍微增加。 你看题目 a是大数 b是32位
2 回复 分享
发布于 2024-07-14 21:07 吉林
我觉得他这么出题就是为了卡Java...
1 回复 分享
发布于 2024-07-14 21:14 吉林

相关推荐

owwhy:难,技术栈在嵌入式这块显得非常浅,并且简历有大问题。教育经历浓缩成两行就行了,写什么主修课程,说的不好听这块没人在意,自我评价删了,项目写详细点,最终简历缩成一页。相关技能怎么说呢,有点差了,还写成这么多行
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务