题意:将n个糖果插入f-1个挡板分成f分(a1,a2,a3...af)。

问有多少种分法能够使得gcd(a1,a2,a3...af)=1;

解法。莫比乌斯容斥,首先按1为单位分,这时候有C(n-1,f-1)种,然后去掉gcd不是1的。这时候就规定质因子个数是奇数的就减(mou值为-1),偶数的为加(mou值是+1),然后出现平方数为约数的数mou值为0。这样就做到了容斥,非常巧妙。

容斥时,要注意仅仅用计算是n的约数的数,由于假设不是n的约数,那么gcd里一定不会出现这个因子。

代码:

/******************************************************
* author:xiefubao
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <string.h>
//freopen ("in.txt" , "r" , stdin);
using namespace std;#define eps 1e-8
#define zero(_) (abs(_)<=eps)
const double pi=acos(-1.0);
typedef long long LL;
const int Max=100010;
const int INF=1000000007;int mou[Max];
LL fac[Max];
map<pair<int,int>,LL> maps;
int n,f;
LL pow(LL a,int b)
{LL ans=1;while(b){if(b&1)ans=(ans*a)%INF;a=(a*a)%INF;b>>=1;}return ans;
}
LL getreverse(LL lo)
{return pow(lo,INF-2);
}
void init()
{for(LL i=2; i<Max; i++)if(!mou[i]){mou[i]=i;for(LL j=i*i; j<Max; j+=i)mou[j]=i;// cout<<i<<" ";}mou[1]=1;for(int i=2; i<Max; i++){if((i/mou[i])%mou[i]==0) mou[i]=0;else mou[i]=-mou[i/mou[i]];}fac[0]=1;for(int i=1; i<Max; i++)fac[i]=(fac[i-1]*i)%INF;
}
LL C(int a,int b)
{LL ans=fac[a];ans=(ans*getreverse(fac[a-b])%INF*getreverse(fac[b]))%INF;return ans;
}
int main()
{int t;cin>>t;init();while(t--){scanf("%d%d",&n,&f);if(maps.find(pair<int,int>(n,f))!=maps.end()){printf("%I64d\n",maps[pair<int,int>(n,f)]);continue;}LL ans=0;for(int i=1; i<=n/f; i++){if((n%i)!=0)continue;ans+=C(n/i-1,f-1)*mou[i];if(ans>=INF)ans-=INF;if(ans<0)ans+=INF;}printf("%I64d\n",ans);maps[pair<int,int>(n,f)]=ans;}return 0;
}

转载于:https://www.cnblogs.com/ldxsuanfa/p/10589070.html

CF(439E - Devu and Birthday Celebration)莫比乌斯容斥相关推荐

  1. [CodeForces 439E] Devu and Birthday Celebration(莫比乌斯反演) | 错题本

    文章目录 题目 分析 代码 题目 [CodeForces 439E] Devu and Birthday Celebration 分析 莫比乌斯函数比较重要的性质: μ ∗ 1 = ε \mu * 1 ...

  2. hdu1695(莫比乌斯)或欧拉函数+容斥

    题意:求1-b和1-d之内各选一个数组成数对.问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个能够简化成1-b/k 和1-d/k 的互质有序数对的个数 ...

  3. 莫比乌斯反演/容斥 +2020ICPC 江西省大学生程序设计竞赛 A Simple Math Problem

    题目描述 输入描述: 输出描述: 示例1 输入 3 输出 5 分析: 1.这个题其实考的是一个莫比乌斯反演题,但是由于我知识储备不够,没有看出来,题目给的范围可以瞎搞一下,所以下面容斥可以过. 2.转 ...

  4. Comet OJ - Contest #8 E神奇函数(莫比乌斯函数容斥)

    Comet OJ - Contest #8 E神奇函数(莫比乌斯函数容斥) 题目大意 定义d(x)d(x)d(x)的值为x的最小素因子,定义 f(x)={1x=1d(x)f(xd2(x))x>1 ...

  5. HDU - 5468 Puzzled Elena (容斥/莫比乌斯)

    做了好几个容斥了,一直找不到feel,这个做完在现在有一点感觉了.虽然刚开始也不会.但就是发现感觉不一样了. 首先,不考虑树的关系,单纯给出一个m,还有一个集合(里面数字任意),求集合里面跟m互质的数 ...

  6. hdu5468 Puzzled Elena(容斥 莫比乌斯反演)

    hdu5468 Puzzled Elena 题意 求一棵子树内与它互质的点个数 解法 容斥 我们先求出与它不互质的数的个数,再用总数减去就好. #include <cstdio> #inc ...

  7. bzoj2440 [中山市选2011]完全平方数 容斥+莫比乌斯函数

    Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些 数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而 这丝毫不影响他对其他数的热爱. 这 ...

  8. CodeForces 1139D Steps to One(概率dp 容斥/莫比乌斯反演)

    题目链接https://codeforces.com/contest/1139/problem/D 题意:给定一个m,每次在1-m中随机取一个数放到容器中,当容器的gcd为1时停止,求期望步数,用分数 ...

  9. BZOJ2301:[HAOI2011]Problem b(莫比乌斯反演,容斥)

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

最新文章

  1. ballerina 学习二十九 数据库操作
  2. 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)
  3. LTE小区选择和重选
  4. C#中的Explicit和Implicit了解一下吧
  5. IDEA添加外部插件-yuicompressor压缩js/css 笔记
  6. itext 生成 PDF
  7. 正则匹配十六进制的色值,以#号开头
  8. [Python]自学笔记36:论一只爬虫的自我修养3:隐藏
  9. LVM动态添加硬盘空间
  10. ios适配暗黑模式-图片、颜色
  11. Bokeh可视化笔记——x轴设为日期
  12. 2019 kyle年度总结
  13. 解决typescript 提示 Object is possibly ‘null‘
  14. 网站常用邮箱找回密码流程插件页面
  15. matlab 儒略历 函数,儒略日(儒略日 在线计算器)
  16. 创意电子学-第00课:注册Tinkercad 网站账号
  17. Android使用R8压缩,混淆,优化App
  18. 什么是 NumPy?
  19. 闭包函数到底是什么?有什么用?
  20. 微信小程序实现视频试看功能

热门文章

  1. wireshark 选择网络接口
  2. find命令以及管道的简单使用技巧
  3. 配置FTP服务(一):pureftp部署和优化
  4. C#学习基本概念之属性使用
  5. 第46条:for-each循环优先于传统的for循环
  6. 策马扬鞭,踏上新征程。
  7. 跨域请求之JSONP
  8. 开启Windows7多用户远程桌面
  9. 出现authentication mode=Windows/错误解决办法
  10. 在不重装XP系统,增加系统盘剩余空间