/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 2ms 532.0 KiB
#3 Accepted 13ms 556.0 KiB
#4 Accepted 13ms 532.0 KiB
#5 Accepted 148ms 548.0 KiB
#6 Accepted 142ms 552.0 KiB
#7 Accepted 11ms 556.0 KiB
#8 Accepted 14ms 556.0 KiB
#9 Time Exceeded ≥1547ms ≥584.0 KiB
#10 Time Exceeded ≥1598ms ≥600.0 KiB

Code

#include <iostream>
#include <vector>

using namespace std;

long long get_smal(long long n) {
    for (long long i = 2; i * i <= n; ++i) {
        if (n % i <1) return i;
    }
    return n;
}

long long get_big(long long n) {
    long long last = -1;
    if (n % 2 <1) {
        last = 2;
        while (n % 2 <1) n /= 2;
    }
    if (n % 3 <1) {
        last = 3;
        while (n % 3 <1) n /= 3;
    }
    long long i = 5;
    while (i * i <= n) {
        if (n % i <1) {
            last = i;
            while (n % i <1) n /= i;
        }
        if (n % (i + 2) <1) {
            last = i + 2;
            while (n % (i + 2) <1) n /= (i + 2);
        }
        i += 6;
    }

    return (n == 1) ? last : n;
}

void solve() {
    long long n, k;
    cin >> n >> k;

    long long smal = get_smal(n);
    long long big = get_big(n);
    long long x = 0;

    while (smal != big && x < k) {
        if (x % 2 <1) {
            n *= smal;
        } else {
            n /= big;
            big = get_big(n);
        }
        x++;
    }

    long long rem = k - x;
    if (rem % 2 != 0) {
        if (x % 2 <1) {
            cout << n * smal << "\n";
        } else {
            cout << n / big << "\n";
        }
    } else {
        cout << n << "\n";
    }
}

int main() {
    int t;
    if (cin >> t) {
        while (t--) {
            solve();
        }
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1194 D. Roy and Prime Game
Contest
Happy New Year 2026
Language
C++17 (G++ 13.2.0)
Submit At
2026-01-06 16:46:34
Judged At
2026-01-06 16:46:34
Judged By
Score
80
Total Time
≥1598ms
Peak Memory
≥600.0 KiB