求助 atcoder abc284D题
  • 板块学术版
  • 楼主Swiftie_wyc22
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/1/8 23:57
  • 上次更新2023/10/24 05:06:06
查看原帖
求助 atcoder abc284D题
285414
Swiftie_wyc22楼主2023/1/8 23:57

这道题我不会做,我看了题解,也不太明白 https://atcoder.jp/contests/abc284/editorial/5490

我不太明白的是,为什么一定选出来的 i 就是质数?程序中的 break 的用处又是什么?

这里贴出题解代码:

#include<bits/stdc++.h>

using namespace std;

using ll = long long;

int main() {
    int t;
    cin >> t;
    while (t--) {
        ll n;
        cin >> n;
        
        ll p = 0, q = 0;
        for (ll i = 2; i * i * i <= n; i++) {
            if (n % i != 0) continue;
            if ((n / i) % i == 0) {
                p = i;
                q = n / i / i;
            } else {
                q = i;
                p = (ll) round(sqrt(n / i));
            }
            break;
        }
        cout << p << ' ' << q << endl;
    }
}

2023/1/8 23:57
加载中...