警示后人 如果你 #6 TLE
查看原帖
警示后人 如果你 #6 TLE
979266
Genius_Star楼主2023/7/29 15:21

如果你 #6 TLE:

那么请检查,你是否写的是以下代码:

for(int i=1;i*i<=P*Q;i++)

如果是,那么请将 i 开为 long long,如果你执意不开 long long 的话,可以修改为以下形式:

for(int i=1;i<=sqrt(P*Q);i++)

原因::

因为 P×QP \times Q 最大为 101010^{10},在枚举它的约数时如果是 i×ii \times i 这样判断是否到了根号,如果 ii 是 int 类型将会爆。

但是对于 P×Q\sqrt{P \times Q},其范围在 10510^5 以内,所以可以通过。

关于 TLE 的原因是,如果你的数爆了一个类型,那么该值将会随机赋值为极大或者极小的数。

注: 如果你要使用 STL 库里面的 sqrt 函数,那么请使用 math.h 或者万能头文件。

2023/7/29 15:21
加载中...