Win or Freeze

· · 题解

题解

不妨假设输入的数为 q = p_1^{k_1} \times p_2^{k_2} \times p_3^{k_3} \times \dots \times p_n^{k_n}

我们讨论输入的数:

有了以上结论,我们可以得到:

一个更小清新的结论就是:

所以我们只要计算这个数的质因数的次数之和,还有每个质因数是什么就好。

代码

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define dbg(x) cout << #x " = " << (x) << endl
#define quickio ios::sync_with_stdio(false);
#define quickin cin.tie(0);
#define quickout cout.tie(0);

using namespace std;

signed main() {
    quickio
    quickin
    quickout
    int n; cin >> n;
    int tot = 0, m = n;
    vector <int> vec;
    if(n == 1) tot = 1;
    for(int i = 2; i * i <= n; i++)
        while(n % i == 0) tot++, n /= i, vec.push_back(i);
    if(n > 1) vec.push_back(n), n = 1, tot++;
    if(tot == 1) cout << 1 << endl << 0 << endl;
    else if(tot == 2) cout << 2 << endl;
    else cout << 1 << endl << vec[0] * vec[1] << endl;
    return 0;
}