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


做法:
\[f(m,n) = \sum _{i=1}^{m} \mu(in) = \sum_{i=1}^{m}[gcd(i,n)=1]\mu(i)\mu(n) = \mu(n)\sum_{d|n}\mu(d)f(\frac{m}{d},d)\]
边界: n=1,杜教筛求\(\sum_{i=1}^{m}\mu(i)\),m = 1, 返回\(\mu(n)\),预处理尽可能把空间卡满。

2个小时的时候就推出来了这个式子,不会算复杂度,本校没人过。。。于是成功放弃了。。。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
#define mp make_pair
#define PII pair<int,int>
#define sc second
typedef long long ll;
const int N = 1e7 + 13000000 + 1;
const int LM = 13000000;
using namespace std;
ll n,m;
bool notp[N];
int p[N], smiu[N];
short miu[N];
void init() {notp[1] = 1;miu[1] = 1;for(int i=2;i<=1e7+LM;++i) {if(!notp[i]) p[++p[0]] = i, miu[i] = -1;for(int j=1;j<=p[0]&&p[j]*i<=1e7+LM;++j) {notp[i*p[j]] = 1;if(i%p[j] == 0) {miu[i*p[j]] = 0;break;}miu[i*p[j]] = miu[i]*miu[p[j]];}}for(int i=1;i<=1e7+LM;++i) smiu[i] = smiu[i-1] + miu[i];
}
ll g(ll n) {if(n<=1e7+LM) return smiu[n];if(n == 1) return 1;ll ans = 1;for(ll i=2,r;i<=n;i=r+1) {r = (n/(n/i));ans -= (r-i+1LL)*g(n/i);}return ans;
}
void chai(ll x,vector<ll> &v,ll &mu) {v.clear();mu = 1;for(int i=1;i<=p[0]&&1LL*p[i]*p[i]<=x;++i) {if(x%p[i]==0) {int cnt = 0;v.pb(p[i]);mu = -mu;while(x%p[i]==0) x/=p[i], cnt++;if(cnt>1) mu = 0;}}if(x!=1) mu=-mu, v.pb(x);
}
ll f(ll m,ll n) {if(m == 0 || n == 0) return 0;ll mu_n, ans = 0;if(m == 1 && n <= 1e7+LM) return miu[n];vector<ll> v;chai(n,v,mu_n);if(m == 1) return mu_n;if(n == 1) return g(m);if(mu_n == 0) return 0;int cnt = v.size();for(int s=0;s<(1<<cnt);++s) {ll d = 1, mu_d = 1;for(int i=0;i<cnt;++i) if(s&(1<<i)){d = d*v[i];mu_d = -mu_d;}if(m >= d) ans += mu_d*f(m/d,d);}ans *= mu_n;return ans;
}int main() {init();scanf("%lld%lld",&m,&n);printf("%lld\n",f(m,n));return 0;
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9615109.html

ACM-ICPC 2018 徐州赛区网络预赛 D. EasyMath相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 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×n ...

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

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

最新文章

  1. win messenger启动随outlook explorer
  2. 自学python的书籍逐级推荐-近300本Python书籍到底哪家强,用Python告诉你
  3. Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。
  4. 想转行人工智能?机会来了!
  5. golang学习笔记:Interface类型断言详情
  6. mysql的基本数据类型_mysql基本数据类型(mysql学习笔记三)
  7. break 和continue的用法 java——CSDN
  8. 军训分批(codevs 2751)
  9. 2017.3.12 每日小记
  10. 页面间参数传递---基于Vue的uniapp手机端_前端UI_uview工作笔记005
  11. 云计算创业在美国真是如火如荼。
  12. linux iphone文件,在linux下生成iphone所需要的视频和音频文件的方法总结
  13. scipy.sparse、pandas.sparse、sklearn稀疏矩阵的使用
  14. 系统软件-大型OA源码大型OA源代码C#.netOA系统源代码开发文档
  15. java编译时绑定_为什么Java在编译时绑定变量?
  16. 【数据结构——哈夫曼树及其应用】
  17. linux使用make命令编译错误,有关linux的make文件编译问题
  18. linux系统怎么退出文本模式,linux的有关重启,文本模式的切换
  19. 谷歌翻译接口识别语言php,利用谷歌翻译接口实现网站多语言切换
  20. Spring Boot学习笔记(三)Repository的使用

热门文章

  1. categories php,manage-categories.php
  2. 算法设计与分析——动态规划——石子合并问题
  3. 算法设计与分析——递归与分治策略——棋盘覆盖
  4. typeorm_Nestjs 热更新 + typeorm 配置
  5. android 那几种动画,Android 动画实现几种方案
  6. 埃氏筛法(素数筛选)
  7. Minimal Square CodeForces - 1360A(简单思维和图形判断)
  8. c语言函数求pi的近似值,C语言 用π/4=1-1/3+1/5-1/7+... 求π的近似值
  9. HDU 4059 The Boss on Mars (容斥)(2011 Asia Dalian Regional Contest)
  10. P6378 [PA2010] Riddle(2-sat/前后缀优化建图)