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 徐州赛区网络预赛)(递归 + 杜教筛)相关推荐

  1. ACM-ICPC 2018 徐州赛区网络预赛 D. Easy Math

    Easy Math 问答问题反馈 只看题面 16.47% 1000ms 262144K Given a positive integers nn , Mobius function \mu(n)μ(n ...

  2. 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 ...

  3. 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)= ...

  4. ACM-ICPC 2018 徐州赛区网络预赛G (单调队列)

    传送门 题面: There's a beach in the first quadrant. And from time to time, there are sea waves. A wave (  ...

  5. ACM-ICPC 2018 徐州赛区网络预赛 - A. Hard to prepare - (计数递归)

    题目链接 After Incident, a feast is usually held in Hakurei Shrine. This time Reimu asked Kokoro to deli ...

  6. ACM-ICPC 2018 徐州赛区网络预赛 I. query 树状数组

    I. query 题目链接: Problem Description Given a permutation \(p\) of length \(n\), you are asked to answe ...

  7. ACM-ICPC 2018 徐州赛区网络预赛

    BE, GE or NE 题意: 每一轮有三种操作, 加上a 减去b 或者 取负 当且仅当 a, b, c 不为0时,对应的操作有效; 给出一个上界和一个下界 大于等于上界就是 Good Ending ...

  8. ACM-ICPC 2018 徐州赛区网络预赛 Morgana Net

    题意:Morgana Net 题解:把a矩阵每一位根据公式推出递推矩阵,然后用矩阵快速幂,比赛没想到啊,, #include<bits/stdc++.h> #define ll long ...

  9. ACM-ICPC 2018 徐州赛区网络预赛 I. Characters with Hash

    注意几种情况,前导零是不要的:如果在开头的第一个值为个位数,那么占一位,如果个位数出现在中间,那么占两位,比如6就是06 #include <iostream> #include < ...

最新文章

  1. ios与html数据交互,iOS iOS与html进行交互
  2. go语言快速开发入门示例
  3. 腾讯云Kafka海量服务自动化运营实践
  4. [转]Installing Memcached on Windows
  5. php cdi_异步CDI事件
  6. 使用Spring boot,Thymeleaf,AngularJS从零开始构建一个新的Web应用程序-第3部分
  7. 支付宝上线小程序,外国人来中国旅游再也不用烦恼了
  8. ue4vr插件_UE4 含源码插件合集【转载】
  9. Java自动化测试框架-06 - 来给你的测试报告化个妆整个形 - (下)(详细教程)
  10. springboot获取客户端发来的数据
  11. 分享我的Linux开发环境
  12. 小记linux如何挂载window下的共享文件
  13. matlab入门(适合初学者)
  14. c# winform人脸识别
  15. js获取某月的天数以及某天的前一个日期和后一天日期
  16. 教育行业运维审计用什么堡垒机好?有什么作用?
  17. python 取余 韩信点兵_韩信点兵问题的神算法
  18. k8s 亲和 反亲和介绍
  19. python菜鸟教程mac安装_Python菜鸟教程 | 多平台安装
  20. java大学生网上请假系统ssm框架

热门文章

  1. 怎么计算信息完整度_德阳冻货运镖怎么计算费用
  2. linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘
  3. 软件测试技术——系统测试
  4. postman安装_Postman插件的应用与实战(二)
  5. mysql workbench_爬虫实例:玩转mysql(预备篇)
  6. 这才是老公的正确用法,不吃就往死里打......
  7. 疯狂福利 | 美剧《天赋异禀》1-2季免费送!播放超12亿!刷了整整一晚上,太上头!...
  8. 神经网络告诉我,谁是世界上最「美」的人?
  9. php mysql explain_MySQL Explain详解
  10. Java如何控制用户输入的长度,用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!!...