【GDOI2018模拟8.11】质数
来源:互联网 发布:东汉末年 知乎 编辑:程序博客网 时间:2024/06/06 13:56
Description:
1<=n<=10^12
题解:
看到这种题就会想这是不是反演题。
如果它是一道反演题,那它必须要有gcd来,题目中没有gcd,所以能不能变换出gcd呢。
实际上
观察式子,减去不必要的循环,缩小循环范围。
线筛出μ,外层暴力枚举d,μ(d) ≠ 0时再内层循环分块。
根据打表可得:
时间复杂度证明:
那么就是
Code:
#include<cstdio>#define ll long long#define fo(i, x, y) for(ll i = x; i <= y; i ++)using namespace std;const ll N = 1000000, mo = 998244353;ll mu[N + 5], p[N], n, ans, s;bool bz[N + 5];int main() { mu[1] = 1; fo(i, 2, N) { if(!bz[i]) p[++ p[0]] = i, mu[i] = -1; fo(j, 1, p[0]) { ll k = i * p[j]; if(k > N) break; bz[k] = 1; if(i % p[j] == 0) { mu[k] = 0; break; } mu[k] = -mu[i]; } } scanf("%lld", &n); for(ll d = 1; d * d <= n; d ++) if(mu[d] != 0){ ll m = n / (d * d); s = 0; fo(i, 1, m) { ll j = m / (m / i); s += (ll)(m / i) * (j - i + 1) % mo; i = j; } ans += s * mu[d]; } printf("%lld", (ans % mo + mo) % mo);}
阅读全文
1 0
- 【GDOI2018模拟8.11】质数
- 【GDOI2018模拟8.11】质数
- [JZOJ5250]【GDOI2018模拟8.11】质数
- 【jzoj5250】【GDOI2018模拟8.11】【质数】
- 【JZOJ5250】【GDOI2018模拟8.11】质数
- 【JZOJ 5250】【GDOI2018模拟8.11】质数
- 【GDOI2018模拟7.8】质数
- 质数,函数【GDOI2018模拟7.8】
- 【JZOJ5250】【GDOI2018模拟】质数(数论)
- 【GDOI2018模拟7.8】质数 乱搞+哥德巴赫猜想
- 【GDOI2018模拟8.11】决战
- 【GDOI2018模拟7.6】吃干饭
- 【GDOI2018模拟7.9】期末考试
- 【GDOI2018模拟7.8】矩阵
- 【GDOI2018模拟7.10】B
- 【GDOI2018模拟7.10】C
- 【GDOI2018模拟7.10】B
- 【GDOI2018模拟7.10】C
- log()/log
- linux 设备树解析
- IIS http强制转向https(证书已安装好)
- Android系统匿名共享内存Ashmem
- springboot(六)jar快速运行
- 【GDOI2018模拟8.11】质数
- caffe提取网络各个层的特征
- Java程序员必须知道的几种系列辅助开发工具
- temp
- Android 沉浸式状态栏的苦逼之旅
- Linux 终端tty pty pts描述
- Android开发技巧
- static和const
- 微信小程序支付过程详解,基于node.js的后台