社区讨论

Why?大佬求调。

P14949游戏人生参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mjxmebuc
此快照首次捕获于
2026/01/03 09:24
2 个月前
此快照最后确认于
2026/01/03 14:12
2 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std ;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define lowbit(x) (x&(-x))
#define int long long
#define double long double
const int N = 5e5 + 9  ;
const int inf = 1e18 ;
const int mod = 998244353 ;
int n , k ;
int t ;
signed main ( ){
    IOS ;
    cin >> t ;
    while ( t-- ){
        cin >> n >> k ;
        double n2 = sqrtl ( n ) ;
        int m = pow ( n2 , (double)1 / (double) k ) ;
        int ans ;
        if ( pow ( (int)pow ( n , (double) 1 / (double) k ) , k ) == n ){
            cout << (int)pow ( n , (double) 1 / (double) k ) << "\n" ;
            continue ;
        }
        for ( int i = m + 10  ; i >= 1 ; --i ){
            int w = pow ( i , k ) ;
            if ( n % w == 0 ){
                ans = i ;
                break ;
            }
        }
        cout << ans << "\n" ;
    }
    return 0 ;
}
应该是 O(Tn1/6)O(Tn^{1/6}) 的。
大致思路: 因为 nn 的因数应该是 n\geq \sqrt{n} 的,当然除了 nn 本身。
所以,我先枚举 pknp^k \leq \sqrt n p[1,nk]p \in [ 1 , \sqrt [k]{n} ] 。 判断 pkp^k 是否可以整除 nn。当然,我会特判掉 pk=np^k=n 的情况。
没有TLE,只对了3个点,其他均WA。link
不知道是精度不够,还是没有考虑到特殊情况……
大佬求调。

回复

4 条回复,欢迎继续交流。

正在加载回复...