我知道数据范围很大,但是找不出另一种做法了,代码如下:
#include <bits/stdc++.h>
#define mod 998244353
#define int unsigned long long
using namespace std;
int n, ans;
signed main () {
cin.tie (0), cout.tie (0);
ios::sync_with_stdio (0);
cin >> n;
for (int i = 1; i <= n; i ++) {
int cnt = 0, sum = 0, ii = i, gcd;
while (ii != cnt) {
int gc = __gcd (ii + 1, cnt + 1);
if (gc > 1) {
sum ++;
cnt ++, ii ++;
gcd = __gcd (cnt, ii);
cnt /= gcd, ii /= gcd;
} else {
sum ++;
cnt ++;
gcd = __gcd (cnt, ii);
cnt /= gcd, ii /= gcd;
}
}
ans += sum;
ans %= mod;
}
cout << ans;
}