题解 | #小红和小紫的取素因子游戏#

小红和小紫的取素因子游戏

https://www.nowcoder.com/practice/6146f391a69547c4804fe8d0330f1745

因子题我们首先关注数据范围

如果 t 和 x 都是 1e5 左右的大小,我们可以选择暴力预处理出每个数的因子个数储存下来,然后实现O1的查询

本题 t=10 而 x 是 1e9 的范围,显然我们只需要求出这至多十个数的因子个数即可,对于一个 1e9 范围内的数,遍历 1e9 范围内的数是不是其因子是行不通的,时间复杂度是 O(n) ,但是我们小学二年级的时候学过,一个数 n 最多只会有一个大于根号 n 的“大”因子,所以我们只需要遍历根号范围内的数,然后顺便将其除掉,那么最后如果剩下了一个1,代表这个数 n 没有大于根号 n 的因子了,而如果是其他数,那么一定是一个“大”质数,我们就可以只用根号 n 的时间复杂度做出这道题了

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 5;
int __t = 1, n;
void solve() {
    cin >> n;
    int sum = 0;
    for (int i = 2; i * i <= n; i++) {
        while (n % i == 0) {
            sum++;
            n /= i;
        }
    }
    if (n > 1)
        sum++;
    cout << (sum % 2 ? "kou\n" : "yukari\n");
    return;
}
int32_t main() {
#ifdef ONLINE_JUDGE
    ios::sync_with_stdio(false);
    cin.tie(0);
#endif
    cin >> __t;
    while (__t--)
        solve();
    return 0;
}

全部评论

相关推荐

10-30 10:16
南京大学 Java
永远的鹅孝子:给南大✌️跪了
点赞 评论 收藏
分享
评论
4
1
分享
牛客网
牛客企业服务