为什么会T两个点
  • 板块P2092 数字游戏
  • 楼主北京
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/1/4 22:15
  • 上次更新2023/10/24 05:33:19
查看原帖
为什么会T两个点
322285
北京楼主2023/1/4 22:15

虽然自己另写了别的思路的代码A掉了这题,但是还是很想知道为啥这份代码会T,什么数据能把这份代码卡掉

TLE :#9 #11

感谢!

#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long Q;
    cin >> Q;
    long long s = 0, p1 = 0, p2 = 0;
    for (long long i = 2, j = 1, T = Q; i <= Q && s < 3; ++i, ++j)
    {
        if (j * j > T && s == 0) break;//这句话是防止被大质数卡掉
        while (Q % i == 0)
        {
            ++ s, Q /= i;
            if (s == 3) break;
            if (!p1) p1 = i;
            else if (!p2) p2 = i;
        }
    }
    if (s <= 1) printf("1\n0");
    else if (s <= 2) puts("2");
    else { puts("1"); printf("%lld", p1 * p2);}
    return 0;
}
2023/1/4 22:15
加载中...