51nod 1742 开心的小Q(莫比乌斯函数)
来源:互联网 发布:代码优化 编辑:程序博客网 时间:2024/05/21 18:37
看了官方题解的最终结果
表示“通过容斥原理很容易可以得到F(n)。。。”那里没看懂。。不过这并不影响做题,毕竟公式都有了,套上就行了。看懂的路过的求讲一下。
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int MAXN = 100000;bool check[MAXN+10];int prime[MAXN+10];int mu[MAXN+10];void Moblus(){ memset(check,false,sizeof(check)); mu[1] = 1; int tot = 0; for(int i = 2; i <= MAXN; i++) { if( !check[i] ) { prime[tot++] = i; mu[i] = -1; } for(int j = 0; j < tot; j++) { if(i * prime[j] > MAXN) break; check[i * prime[j]] = true; if( i % prime[j] == 0) { mu[i * prime[j]] = 0; break; } else { mu[i * prime[j]] = -mu[i]; } } }}LL F(LL num){ int limit = sqrt(num); LL ret = 0; for(int i = 1; i <= limit; ++i) ret += mu[i]*(num/(i*i)); return num-ret;}LL S(LL num){ int limit = sqrt(num); LL res = 0; LL r; for(int i = 1; i <= num; i = r+1) { r = num/(num/i); res += (r-i+1)*F(num/i); } return res;}int main(){ Moblus(); int a,b; scanf("%d %d",&a,&b); printf("%I64d\n",S(b)-S(a-1)); return 0;}
阅读全文
0 0
- 51nod 1742 开心的小Q(莫比乌斯函数)
- 51Nod-1742-开心的小Q
- 51nod 1742 开心的小Q
- 51nod 1742 开心的小Q (容斥,分块)
- 51nod 欢乐手速场C 开心的小Q
- 51nod--1240莫比乌斯函数 (数论)
- 莫比乌斯函数(51nod-1240)
- 51nod 1778 小Q的集合
- NKOJ 4040 (CQOI 2017) 小Q的表格(莫比乌斯反演+分块+递推+线性筛/欧拉函数+分块+线性筛)
- 51nod点头网-1240 莫比乌斯函数
- 51nod 1240 莫比乌斯函数
- 51Nod-1240-莫比乌斯函数
- 51nod:1240 莫比乌斯函数
- 51nod-1240莫比乌斯函数
- 51nod 1240 莫比乌斯函数
- 51 NOD 1244 莫比乌斯函数之和(杜教筛)
- 【51nod 1244】 莫比乌斯函数之和
- 【51NOD 1244】 莫比乌斯函数之和
- 浅谈面向对象设计模式:观察者模式
- std::string::substr
- EasyRTMP 1.3.17.1014版本更新
- Es6知识点回顾
- Web安全
- 51nod 1742 开心的小Q(莫比乌斯函数)
- angularjs请求数据解析并渲染到表格中(天气预报)
- 使用markdown编辑器写博客
- iOS 宏~单例封装宏
- BOM ->History对象
- javascript的四种继承方式
- 练习题1
- opencv-python(10):图像平滑
- 原型链模式