LOJ 6241. 性能优化 I 题解

题给代码意为

i=1nj=1nik=1j[gcd(j,k)=1]=i=1nj=1niφ(j)

S(n)=i=1nφ(i)

则答案为

i=1nS(ni)

发现它很像杜教筛式子

S(n)=12n(n+1)i=2nS(ni)

所以直接代入,答案为

i=1nS(ni)=S(n)+i=2nS(ni)=12n(n+1)i=2nS(ni)+i=2nS(ni)=12n(n+1)

时间复杂度 O(lgn)

#include <iostream>
#define int long long
using namespace std;
const int mod = 998244353;
const int _2 = 499122177;
static inline int read() {
int x = 0;
char ch = cin.get();
while (!isdigit(ch))
ch = cin.get();
while (isdigit(ch)) {
x = ((x << 3) + (x << 1) + (ch ^ 48)) % mod;
ch = cin.get();
}
return x;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
while (T--) {
int n = read();
cout << n * (n + 1) % mod * _2 % mod << endl;
}
return 0;
}
posted @   bluewindde  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示