Easy Math(ACM-ICPC 2018 徐州赛区网络预赛)(递归 + 杜教筛)
Easy Math
推式子
∑i=1mμ(in)∑i=1mμ(i×nd×d),d是n的一个质因子i,d互质项有(−∑i=1mμ(i×nd)),由于减去了多余的非互质项,所以加上,−∑i=1mμ(i×nd)+∑i=1mdμ(i×d×nd)−∑i=1mμ(i×nd)+∑i=1mdμ(i×n)\sum_{i = 1} ^{m} \mu(in)\\ \sum_{i = 1} ^{m} \mu(i \times \frac{n}{d} \times d),d是n的一个质因子\\ i, d互质项有(-\sum_{i = 1} ^{m} \mu(i \times \frac{n}{d})),由于减去了多余的非互质项,所以加上,\\ -\sum_{i = 1} ^{m} \mu(i \times \frac{n}{d}) + \sum_{i = 1} ^{\frac{m}{d}} \mu(i \times d \times \frac{n}{d})\\ -\sum_{i = 1} ^{m} \mu(i \times \frac{n}{d}) + \sum_{i = 1} ^{\frac{m}{d}} \mu(i \times n)\\ i=1∑mμ(in)i=1∑mμ(i×dn×d),d是n的一个质因子i,d互质项有(−i=1∑mμ(i×dn)),由于减去了多余的非互质项,所以加上,−i=1∑mμ(i×dn)+i=1∑dmμ(i×d×dn)−i=1∑mμ(i×dn)+i=1∑dmμ(i×n)
由此我们可以递归加上杜教筛来得到答案:
边界条件n==1n == 1n==1,return∑i=1mμ(i)return\ \sum_{i = 1} ^{m} \mu(i)return ∑i=1mμ(i)。
m==0,return0m == 0, return\ 0m==0,return 0。
代码
/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>using namespace std;typedef long long ll;
const int inf = 0x3f3f3f3f;const int N = 2e6 + 10;int prime[N], mu[N], cnt;bool st[N];void init() {mu[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {prime[cnt++] = i;mu[i] = -1;}for(int j = 0; j < cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0) break;mu[i * prime[j]] = -mu[i];}}for(int i = 1; i < N; i++) {mu[i] += mu[i - 1];}
}map<ll, ll> ans_s;ll S(ll n) {if(n < N) return mu[n];if(ans_s.count(n)) return ans_s[n];ll ans = 1;for(ll l = 2, r; l <= n; l = r + 1) {r = n / (n / l);ans -= (r - l + 1) * S(n / l);}return ans_s[n] = ans;
}ll F(ll n, ll m) {if(n == 1) return S(m);if(m == 0) return 0;for(int i = 0; 1ll * prime[i] * prime[i] <= n; i++) {if(n % prime[i] == 0) {return F(n, m / prime[i]) - F(n / prime[i], m);} }return F(n, m / n) - F(n / n, m);
}int main() {// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);init();ll n, m;scanf("%lld %lld", &m, &n);ll temp = n; for(int i = 0; i < cnt; i++) {int cnt = 0;while(n % prime[i] == 0) {n /= prime[i];cnt++;}if(cnt >= 2) {puts("0");return 0;}}printf("%lld\n", F(temp, m));return 0;
}
Easy Math(ACM-ICPC 2018 徐州赛区网络预赛)(递归 + 杜教筛)相关推荐
- ACM-ICPC 2018 徐州赛区网络预赛 D. Easy Math
Easy Math 问答问题反馈 只看题面 16.47% 1000ms 262144K Given a positive integers nn , Mobius function \mu(n)μ(n ...
- ACM-ICPC 2018 徐州赛区网络预赛 Features Track(STL二维map)
Morgana is learning computer vision, and he likes cats, too. One day he wants to find the cat moveme ...
- ACM-ICPC 2018 徐州赛区网络预赛 D. EasyMath
ACM-ICPC 2018 徐州赛区网络预赛 D. EasyMath 做法: \[f(m,n) = \sum _{i=1}^{m} \mu(in) = \sum_{i=1}^{m}[gcd(i,n)= ...
- ACM-ICPC 2018 徐州赛区网络预赛G (单调队列)
传送门 题面: There's a beach in the first quadrant. And from time to time, there are sea waves. A wave ( ...
- ACM-ICPC 2018 徐州赛区网络预赛 - A. Hard to prepare - (计数递归)
题目链接 After Incident, a feast is usually held in Hakurei Shrine. This time Reimu asked Kokoro to deli ...
- ACM-ICPC 2018 徐州赛区网络预赛 I. query 树状数组
I. query 题目链接: Problem Description Given a permutation \(p\) of length \(n\), you are asked to answe ...
- ACM-ICPC 2018 徐州赛区网络预赛
BE, GE or NE 题意: 每一轮有三种操作, 加上a 减去b 或者 取负 当且仅当 a, b, c 不为0时,对应的操作有效; 给出一个上界和一个下界 大于等于上界就是 Good Ending ...
- ACM-ICPC 2018 徐州赛区网络预赛 Morgana Net
题意:Morgana Net 题解:把a矩阵每一位根据公式推出递推矩阵,然后用矩阵快速幂,比赛没想到啊,, #include<bits/stdc++.h> #define ll long ...
- ACM-ICPC 2018 徐州赛区网络预赛 I. Characters with Hash
注意几种情况,前导零是不要的:如果在开头的第一个值为个位数,那么占一位,如果个位数出现在中间,那么占两位,比如6就是06 #include <iostream> #include < ...
最新文章
- ios与html数据交互,iOS iOS与html进行交互
- go语言快速开发入门示例
- 腾讯云Kafka海量服务自动化运营实践
- [转]Installing Memcached on Windows
- php cdi_异步CDI事件
- 使用Spring boot,Thymeleaf,AngularJS从零开始构建一个新的Web应用程序-第3部分
- 支付宝上线小程序,外国人来中国旅游再也不用烦恼了
- ue4vr插件_UE4 含源码插件合集【转载】
- Java自动化测试框架-06 - 来给你的测试报告化个妆整个形 - (下)(详细教程)
- springboot获取客户端发来的数据
- 分享我的Linux开发环境
- 小记linux如何挂载window下的共享文件
- matlab入门(适合初学者)
- c# winform人脸识别
- js获取某月的天数以及某天的前一个日期和后一天日期
- 教育行业运维审计用什么堡垒机好?有什么作用?
- python 取余 韩信点兵_韩信点兵问题的神算法
- k8s 亲和 反亲和介绍
- python菜鸟教程mac安装_Python菜鸟教程 | 多平台安装
- java大学生网上请假系统ssm框架
热门文章
- 怎么计算信息完整度_德阳冻货运镖怎么计算费用
- linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘
- 软件测试技术——系统测试
- postman安装_Postman插件的应用与实战(二)
- mysql workbench_爬虫实例:玩转mysql(预备篇)
- 这才是老公的正确用法,不吃就往死里打......
- 疯狂福利 | 美剧《天赋异禀》1-2季免费送!播放超12亿!刷了整整一晚上,太上头!...
- 神经网络告诉我,谁是世界上最「美」的人?
- php mysql explain_MySQL Explain详解
- Java如何控制用户输入的长度,用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!!...