Hackerrank Coprime Conundrum
来源:互联网 发布:java序列化常用的地方 编辑:程序博客网 时间:2024/06/07 06:35
计算小于乘积小于
具体的,计算\sum_\limits{i=1}^n\sum\limits_{j=i}^n[i \times j \le n][gcd(i,j)=1]
其中
可以考虑枚举
这部分可以用容斥在
于是这题就可以在
容斥这部分可以先筛一个莫比乌斯函数在预处理每个数那些莫比乌斯函数不等于0的因子来简化计算,具体见代码
#include<bits/stdc++.h>using namespace std;#define LL long long const int maxn = 112345;LL count(LL v,LL st,LL ed){ return ed / v - st / v;}int mu[maxn];vector<int> fac[maxn];LL cal(LL v,LL ed){ LL ret = 0; for(auto x : fac[v]){ ret += mu[x] * count(x,v,ed); } return ret;}int main(){ memset(mu,0,sizeof(mu)); mu[1] = 1; for(int i=1;i<maxn;i++){ for(int j=i*2;j<maxn;j+=i){ mu[j] -= mu[i]; } } for(int i=1;i<maxn;i++){ if(mu[i]) for(int j=i;j<maxn;j+=i) fac[j].push_back(i); } LL n; cin>>n; LL ans = 0; for(LL i = 2;i * i <= n;i++){ ans += cal(i,n / i); } cout<<ans<<endl; return 0;}
0 0
- Hackerrank Coprime Conundrum
- Hackerrank Coprime Power Sum
- Coprime
- Coprime
- hackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- CALCULATOR CONUNDRUM
- Calculator Conundrum
- 4314. Coprime
- 4314. Coprime
- HDU5072 Coprime
- hdu5072 Coprime
- Coprime Sequence
- OMRON TIMER
- 打印空心菱形
- high与low
- 唐诗三百首
- 通过键盘输入一个四位数,然后计算该四位数上每位数累加之和
- Hackerrank Coprime Conundrum
- Ubuntu解压缩命令zip,tar,tar.gz,tar.bz2
- 在一个数组中保存10个数值,然后在数组中插入一个数,数组中的数仍然有序
- python中的热更新或动态加载
- Nginx与IIS服务器搭建集群的方法
- 编写程序实现对给定的4 个整数从大到小的顺序排列
- 利用java的反射机制模拟hibernate
- 数据结构实验之链表一:顺序建立链表
- 编写程序求一元二次方程的根