P8116
题目要我们做的是,在
若要满足
为了满足条件
为了满足条件
综合所得,
则答案为
设分解质因数后
时间复杂度
#include <bits/stdc++.h>
#define fq(i,a,b) for (int i = (a); i <= (b); i++)
#define fnq(i,a,b) for (int i = (a); i < (b); i++)
#define nfq(i,a,b) for (int i = (a); i >= (b); i--)
#define nfnq(i,a,b) for (int i = (a); i > (b); i--)
#define fe(u) for (int i = head[u]; i; i = edge[i].nxt)
using namespace std;
#define int long long
inline int rd () {
int f = 1;
char ch = getchar ();
while (!isdigit (ch)) (ch == '-' ? (f = -1) : 0), ch = getchar ();
int num = 0;
while (isdigit (ch)) num = num * 10 + ch - '0', ch = getchar ();
return num * f;
}
#define d rd ()
const int mod = 998244353;
int T = d;
int p[10101010], cnt;
signed main () {
while (T--) {
int a = d, b = d - 1;
int sq = sqrt (a); cnt = 0;
fq (i, 2, sq) {
if (a % i == 0) {
p[++cnt] = 0;
while (a % i == 0) ++p[cnt], a /= i;
}
} if (a > 1) p[++cnt] = 1;
int ans = 1;
fq (i, 1, cnt) ans = ans * (p[i] * b + 1) % mod;
cout << ans << endl;
}
return 0;
}