/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 2ms 532.0 KiB
#2 Accepted 2ms 532.0 KiB
#3 Accepted 7ms 788.0 KiB
#4 Accepted 5ms 580.0 KiB
#5 Accepted 44ms 788.0 KiB
#6 Accepted 30ms 788.0 KiB
#7 Accepted 4ms 792.0 KiB
#8 Accepted 5ms 812.0 KiB
#9 Accepted 134ms 844.0 KiB
#10 Accepted 323ms 924.0 KiB
#11 Accepted 68ms 788.0 KiB
#12 Accepted 28ms 580.0 KiB

Code

                            /*in the name of almighty ALLAH*/

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;

#define int long long
#define endl '\n'
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define MOD 1000000007
#define MOD2 987654319
#define fast ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define yes cout << "YES" << endl
#define no cout << "NO" << endl
#define sz(x) (int)x.size()

template <typename T> using pbds = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T> using multi_pbds = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;

//***********************************START*******************************************//

const int sz = 1e5 + 5;
vector <bool> marked(sz, true);
vector <int> primes;

void sieve()
{
    int i, j;

    for (i = 3; i * i < sz; i += 2) {
        if (marked[i]) {
            for (j = i * i; j < sz; j += 2 * i) {
                marked[j] = false;
            }
        }
    }

    primes.push_back(2);

    for (i = 3; i < sz; i += 2) {
        if (marked[i]) {
            primes.push_back(i);
        }
    }
}

vector < int > Prime_Factor( int N )
{
    vector < int > factor;
    for(auto P : primes)
    {
        if(1LL * P * P > N) break;
        if(N % P == 0)
        {
            while(N % P == 0)
            {
                factor.push_back(P);
                N /= P;
            }
        }
    }
    if(N > 1) factor.push_back(N);
    return factor;
}

void solve()
{
    int n, k; cin >> n >> k;
    vector < int > a = Prime_Factor(n);

    int hrid = k/2, roy = k - hrid, pw = 0, ans = 1;
    sort(all(a));
    int small = a[0];

    if(hrid >= sz(a)){
        hrid -= sz(a);
        roy -= hrid;
    }
    else{
        pw = sz(a) - hrid;
        for(int i = 0; i < pw; i++){
            ans *= a[i];
        }
    }

    for(int i = 1; i <= roy; i++) ans *= small;
    cout << ans << endl;
}

//***********************************END*********************************************//
int32_t main(){ fast

    int32_t t = 1, i;
    sieve();
      cin >> t;
    for(i = 1; i <= t; i++)
    {
       // cout << "Case " << i << ": ";
        solve();
    }
}

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 15:40:33
Judged At
2026-01-06 15:40:33
Judged By
Score
100
Total Time
323ms
Peak Memory
924.0 KiB