求单个莫比乌斯函数忘记算n本身的质数,WA了一发。

http://www.fjutacm.com/Problem.jsp?pid=2360

首先,显然随着n增大,与m互质的数不会变少。可以二分来求k,关键是怎么快速计算n以内和m互质的数的个数。

反过来,我们求n以内与m的gcd至少为2的数的个数。

枚举m的因子d,d从2开始到m,那么每个因子d的贡献就是mu(d),不知道怎么解释好。

比如枚举了gcd为因子2,那么gcd为4,8的情况就已经被2包含了,不用计算,直接mu(4)=mu(8)=0。

又比如gcd为10的被2和5分别枚举一次,根据容斥原理就要变成-1,mu(10)=-1。

那么就套上一个莫比乌斯的板子。

复杂度是什么呢?首先是二分k,有个log,上限取1e18大概弄60次。

对于每个n=mid,快速计算,枚举因子,1e9的因子貌似也就1e4以下?

每个因子的莫比乌斯函数是根号求出来的,运气好点就卡过去了。

#include<cstdio>
using namespace std;
typedef long long ll; const int N=10025; int pri[N+5],tot,zhi[N+5];
void sieve(int n) {
zhi[1]=1;
for(int i=2; i<=n; i++) {
if(!zhi[i])
pri[++tot]=i;
for(int j=1; j<=tot&&i*pri[j]<=n; j++) {
zhi[i*pri[j]]=1;
if(i%pri[j])
;
else
break;
}
}
} int mu(int n) {
if(n==1)
return 1;
int res=-1;
for(int i=1;i<=tot&&pri[i]<=n;i++){
if(n%pri[i]==0){
if(n%(pri[i]*pri[i])==0)
return 0;
else{
n/=pri[i];
res=-res;
}
}
}
if(n!=1)
res=-res;
return res;
} ll n,m,k; int fac[100];
int pfac[100];
int ftop=0;
void fj(int n) {
ftop=0;
for(int i=1; i<=tot; i++) {
if(n%pri[i]==0) {
fac[++ftop]=pri[i];
pfac[ftop]=0;
while(n%pri[i]==0) {
n/=pri[i];
pfac[ftop]++;
}
}
}
if(n!=1) {
fac[++ftop]=n;
pfac[ftop]=1;
}
return;
} ll ans; ll power(int p,int n) {
if(n==0)
return 1;
ll res=1;
while(n--)
res*=p;
return res;
} ll LIMIT; void dfs(int pos,ll cur) {
if(cur>LIMIT)
return;
if(pos>ftop) {
if(cur>=2&&cur<=LIMIT)
ans+=1ll*mu(cur)*(LIMIT/cur);
return;
}
for(int i=0; i<=pfac[pos]; i++) {
dfs(pos+1,cur*power(fac[pos],i));
}
} ll G(ll n){
LIMIT=n;
ans=0;
dfs(1,1);
return ans;
} ll F(ll n){
return n-G(n);
} ll solve(){
ll L=1,R=1e18;
while(1){
ll MID=(L+R)>>1;
//printf("MID=%lld\n",MID);
if(MID==L){
if(F(L)==k)
return L;
else
return R;
}
ll FMID=F(MID);
//printf("f(n)=%lld\n",FMID);
if(FMID==k){
R=MID;
}
else if(FMID<k){
L=MID+1;
}
else{
R=MID-1;
}
}
return -1;
} int main() {
#ifdef Yinku
freopen("Yinku.in","r",stdin);
#endif // Yinku
sieve(N);
while(~scanf("%lld%lld",&m,&k)){
fj(m);
/*for(int i=1;i<=ftop;i++){
printf("%d:%d\n",fac[i],pfac[i]);
}*/
printf("%lld\n",solve());
}
}

T^TOJ - 2360 - Home_W的超级数学题 - 莫比乌斯反演 - 质因数分解的更多相关文章

  1. 洛谷P3768 简单的数学题 莫比乌斯反演+杜教筛

    题意简述 求出这个式子 \[ \sum_{i=1}^n\sum_{j=1}^n ij(i,j) \bmod p \] 做法 先用莫比乌斯反演拆一下式子 \[ \begin{split} \sum_{i ...

  2. 「洛谷P3768」简单的数学题 莫比乌斯反演+杜教筛

    题目链接 简单的数学题 题目描述 输入一个整数n和一个整数p,你需要求出 \[\sum_{i=1}^n\sum_{j=1}^n (i\cdot j\cdot gcd(i,j))\ mod\ p\]  ...

  3. luogu 3768 简单的数学题 (莫比乌斯反演+杜教筛)

    题目大意:略 洛谷传送门 杜教筛入门题? 以下都是常规套路的变形,不再过多解释 $\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}ijgcd(i,j)$ $\sum ...

  4. LOJ#6229. 这是一道简单的数学题(莫比乌斯反演+杜教筛)

    题目链接 \(Description\) 求\[\sum_{i=1}^n\sum_{j=1}^i\frac{lcm(i,j)}{gcd(i,j)}\] 答案对\(10^9+7\)取模. \(n< ...

  5. 【Luogu3768】简单的数学题(莫比乌斯反演,杜教筛)

    [Luogu3768]简单的数学题(莫比乌斯反演,杜教筛) 题面 洛谷 \[求\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j)\] $ n<=10^9$ 题解 很明显的把\( ...

  6. 【51NOD 1847】奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数)

    [51NOD 1847]奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数) 题面 51NOD \[\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j)^k\] 其中\( ...

  7. 牛客小白月赛13-J小A的数学题 (莫比乌斯反演)

    链接:https://ac.nowcoder.com/acm/contest/549/J来源:牛客网 题目描述 小A最近开始研究数论题了,这一次他随手写出来一个式子,∑ni=1∑mj=1gcd(i,j ...

  8. 洛谷3704 [SDOI2017] 数字表格 【莫比乌斯反演】

    题目分析: 比较有意思,但是套路的数学题. 题目要求$ \prod_{i=1}^{n} \prod_{j=1}^{m}Fib(gcd(i,j)) $. 注意到$ gcd(i,j) $有大量重复,采用莫 ...

  9. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

随机推荐

  1. JQGrid总记录数和查询消耗时间不显示

    其他做的几个页面都显示,只有一个不显示....百度发现, viewrecords选项未配置,应该设置为ture才可以.

  2. 【BZOJ1845】[Cqoi2005] 三角形面积并 几何+扫描线

    [BZOJ1845][Cqoi2005] 三角形面积并 Description 给出n个三角形,求它们并的面积. Input 第一行为n(N < = 100), 即三角形的个数 以下n行,每行6 ...

  3. EasyDarwin开源流媒体云平台之EasyRMS录播服务器功能设计

    需求背景 EasyDarwin开发团队维护EasyDarwin开源流媒体服务器也已经很多年了,之前也陆陆续续尝试过很多种服务端录像的方案,有:在EasyDarwin中直接解析收到的RTP包,重新组包录 ...

  4. EasyIPCamera通过RTSP协议接入海康、大华等摄像机,摒弃私有SDK接入弊端

    本文转自博客:http://blog.csdn.net/xinlanbobo/article/details/53156742 近期工作中需要开发一套视频监控系统,实现WEB端.手机APP端预览局域网 ...

  5. EasyVideoRecorder短视频拍摄、短视频录制SDK支持IOS版本

    在前面的博客<EasyDarwin开发出类似于美拍.秒拍的短视频拍摄SDK:EasyVideoRecorder>和<美拍.秒拍中安卓.IOS短视频拍摄的一些关键技术>中我们简单 ...

  6. maven的基本原理和使用

    一.Maven中央存储库 当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如 ...

  7. 微信分享配置(js-sdk)

    现在的微信分享给朋友-分享到朋友圈 链接带有自定义的title.描述.图片,需要配置js-sdk(地址:mp.weixin.qq.com)微信文档 需要后台配置config的参数,返回给前台 1)de ...

  8. 使用Windows API发送HTTP请求

    先看一个简单的GET示例 #include <Windows.h> #include <winhttp.h> #include <stdio.h> int main ...

  9. 原来 Set 集合也可以排序

    Java 集合类主要由两个接口派生而出: Collection 和 Map.在 Collection 集合中,我们经常用到的是 List 集合和 Map 集合,而 Set 集合出场的机会就相对比较的少 ...

  10. 【USACO OPEN 10】hop

    奶牛们正在回味童年,玩一个类似跳格子的游戏,在这个游戏里,奶牛们在草地上画了一行N个格子,(3 <=N <= 250,000),编号为1..N. 就像任何一个好游戏一样,这样的跳格子游戏也 ...