【CF900D】Unusual Sequences 容斥(莫比乌斯反演)
【CF900D】Unusual Sequences
题意:定义正整数序列$a_1,a_2...a_n$是合法的,当且仅当$gcd(a_1,a_2...a_n)=x$且$a_1+a_2+...+a_n=y$。给定x,y,求合法的序列总数。
x,y<=10^9。
题解:不难想到容斥,先不管gcd的限制,那么总方案数就是$2^{y-1}$。你可以理解为有y个1,除了第一个1,其余的要么加到上一个数中去,要么自己变成一个新数。
如果考虑gcd的限制呢?容斥一发即可。并且容斥系数就是我们常用的莫比乌斯函数。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const ll P=1000000007;
int n,m,tot;
ll ans;
int p[10];
inline ll pm(ll x,ll y)
{
ll z=1;
while(y)
{
if(y&1) z=z*x%P;
x=x*x%P,y>>=1;
}
return z;
}
void dfs(int x,int y,int z)
{
if(x>tot)
{
ans=(ans+P+pm(2,n/y-1)*z%P)%P;
return ;
}
dfs(x+1,y,z),dfs(x+1,y*p[x],-z);
}
int main()
{
scanf("%d%d",&m,&n);
if(n%m)
{
puts("0");
return 0;
}
n/=m;
int i,t=n;
for(i=2;i*i<=t;i++) if(t%i==0)
{
p[++tot]=i;
while(t%i==0) t/=i;
}
if(t!=1) p[++tot]=t;
dfs(1,1,1);
printf("%I64d",ans);
return 0;
}
【CF900D】Unusual Sequences 容斥(莫比乌斯反演)的更多相关文章
- cf900D. Unusual Sequences(容斥 莫比乌斯反演)
题意 题目链接 Sol 首先若y % x不为0则答案为0 否则,问题可以转化为,有多少个数列满足和为y/x,且整个序列的gcd=1 考虑容斥,设\(g[i]\)表示满足和为\(i\)的序列的方案数,显 ...
- 51nod 1355 - 斐波那契的最小公倍数(Min-Max 容斥+莫比乌斯反演)
vjudge 题面传送门 首先我们知道斐波那契数列的 lcm 是不太容易计算的,但是它们的 gcd 非常容易计算--\(\gcd(f_x,f_y)=f_{\gcd(x,y)}\),该性质已在我的这篇博 ...
- 【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数
Description 求第k个没有完全平方因子的数,k<=1e9. Solution 这其实就是要求第k个µ[i](莫比乌斯函数)不为0的数. 然而k太大数组开不下来是吧,于是这么处理. 二分 ...
- bzoj 2005 & 洛谷 P1447 [ Noi 2010 ] 能量采集 —— 容斥 / 莫比乌斯反演
题目:bzoj 2005 https://www.lydsy.com/JudgeOnline/problem.php?id=2005 洛谷 P1447 https://www.luogu.org/ ...
- HDU 5942 Just a Math Problem 容斥 莫比乌斯反演
题意:\( g(k) = 2^{f(k)} \) ,求\( \sum_{i = 1}^{n} g(i) \),其中\( f(k)\)代表k的素因子个数. 思路:题目意思很简单,但是着重于推导和简化,这 ...
- Codeforces.547C.Mike and Foam(容斥/莫比乌斯反演)
题目链接 \(Description\) 给定n个数(\(1\leq a_i\leq 5*10^5\)),每次从这n个数中选一个,如果当前集合中没有就加入集合,有就从集合中删去.每次操作后输出集合中互 ...
- BZOJ4833: [Lydsy1704月赛]最小公倍佩尔数(min-max容斥&莫比乌斯反演)(线性多项式多个数求LCM)
4833: [Lydsy1704月赛]最小公倍佩尔数 Time Limit: 8 Sec Memory Limit: 128 MBSubmit: 240 Solved: 118[Submit][S ...
- HDU 2841 容斥 或 反演
$n,m <= 1e5$ ,$i<=n$,$j<=m$,求$(i⊥j)$对数 /** @Date : 2017-09-26 23:01:05 * @FileName: HDU 284 ...
- 【题解】[HAOI2018]染色(NTT+容斥/二项式反演)
[题解][HAOI2018]染色(NTT+容斥/二项式反演) 可以直接写出式子: \[ f(x)={m \choose x}n!{(\dfrac 1 {(Sx)!})}^x(m-x)^{n-Sx}\d ...
随机推荐
- vue-cli打包之后的项目在nginx的部署
vue-cli执行 npm run build 进行打包,生成dist文件夹,把该文件夹下的文件直接复制到nginx服务器目录下,就可打开项目,但是只有首页是可以看到的,再刷新一下就404了,原因是v ...
- (Dos)/BAT命令入门与高级技巧详解(转)
目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COLOR 7.mode 配置系统设 ...
- Java中级面试题及答案整理
1.webservice是什么? webservice是一种跨编程语言和跨操作系统的远程调用技术,遵循SOPA/WSDL规范. 2.springCloud是什么? springcloud是一个微服务框 ...
- Python打包-Pyinstaller
我们知道,Python很优雅,很值得学习.但是Python是解释性语言,代码需要有Python解释器才能执行,相比较我们平时直接运行exe等可执行文件多了一步的麻烦. 于是,希望能将Python程序打 ...
- Nginx Session Sticky
nginx的粘性session主要通过nginx-sticky-module实现 1 下载 nginx-sticky-module 下载地址:https://code.google.com/p/ngi ...
- 【GIS】ArcGIS Server密码
1.C:\Program Files\ArcGIS\Server\tools\passwordreset 2.PasswordReset -l 列出管理站点的管理员用户的名称 3.PasswordRe ...
- dedeCMS解码
var str = 'arrs1[]=99&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98& ...
- Linux命令之乐--iconv
用法: 实际应用: 批量转换文件编码: [root@wls12c PCK]$ for tfile in `ls -l|awk '{print $9}'`;do echo "iconv -f ...
- Java枚举的小用法
package com.lxc.wmb; public enum TestEnum { Success("200","成功!"), Faild("50 ...
- 百度地图API接口
js <script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("map&quo ...