F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数
题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 。求方案数。
思路 :记 录 一 下 每 个 数 的 倍 数 vector 存 储 ,最后从 2 开始 遍历 一遍每个数 ,从 他的倍数中 挑选 k个 组合数求解。
但是会有重复,因为 比如 K=2,S=15时 , 2倍数 : 2 ,4 , 6, 8, 10, 12, 14 , 挑出了 这种情况 6 ,12,然后
从3的倍数 : 3, 6 ,9,12 ,15, 也选出了 6, 12 这种情况。所以产生重复计数 ,去重,通过他们的最小公倍数 6
6的倍数 : 6, 12, 去掉 即可。 恰好符合莫比乌斯函数的相反数 作为系数。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 1234
vector<ll>p[55];
bool vis[maxn+10];
int prime[maxn+10],mu[maxn+10];
ll s,k,c[33][33],ans,len;
void init()
{
for(int i=0; i<=30; i++)c[i][0]=1;
for(int i=1; i<=30; i++)
for(int j=1; j<=i; j++)
c[i][j]=c[i-1][j-1]+c[i-1][j];
}
void getphi()
{
int cnt=0;
mu[1]=1;
for(int i=2; i<maxn; i++)
{
if(!vis[i])
{
prime[++cnt]=i;
mu[i]=-1;
}
for(int j=1; j<=cnt&&i*prime[j]<maxn; j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0)
{
mu[i*prime[j]]=0;
break;
}
else mu[i*prime[j]]=-mu[i];
}
}
}
int main()
{
init();
getphi();
scanf("%lld%lld",&k,&s);
for(int i=2; i<=s; i++)
for(int j=2; j<=i; j++)
if(i%j==0)p[j].push_back(i);
for(int i=2; i<=s; i++)
{
len=p[i].size();
if(len<k)continue;
ans+=(-mu[i]*c[len][k]);
}
if(ans>10000)printf("10000\n");
else printf("%lld\n",ans);
return 0;
}
直接进行计数 dp[ i ] [ j ] [ k ] 前 i 个 数 选 了 j 个 数, gcd 为 k 的 方 案 数.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 65
ll dp[maxn][maxn][maxn],ans;
int k,s;
int main()
{
scanf("%d%d",&k,&s);
for(int i=0; i<=s; i++)dp[i][1][i]=1;
for(int i=1; i<s; i++)
for(int j=1; j<=min(k,i); j++)
for(int z=1; z<=s; z++)
{
dp[i+1][j][z]+=dp[i][j][z];
dp[i+1][j+1][__gcd(i+1,z)]+=dp[i][j][z];
}
for(int i=2; i<=s; i++)
ans+=dp[s][k][i];
if(ans>10000)printf("10000\n");
else printf("%lld\n",ans);
return 0;
}
F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数的更多相关文章
- HDU 6053 TrickGCD 莫比乌斯函数/容斥/筛法
题意:给出n个数$a[i]$,每个数可以变成不大于它的数,现问所有数的gcd大于1的方案数.其中$(n,a[i]<=1e5)$ 思路:鉴于a[i]不大,可以想到枚举gcd的值.考虑一个$gcd( ...
- Tmutarakan Exams URAL - 1091(莫比乌斯函数 || 容斥)
题意: 求1 - s 中 找出k个数 使它们的gcd > 1 求这样的k个数的对数 解析: 从每个素数的倍数中取k个数 求方案数 然后素数组合,容斥一下重的 奇加偶减 莫比乌斯函数的直接套模 ...
- BZOJ 2440 莫比乌斯函数+容斥+二分
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5473 Solved: 2679[Submit][Sta ...
- Relatively Prime Powers CodeForces - 1036F (莫比乌斯函数容斥)
Relatively Prime Powers CodeForces - 1036F Consider some positive integer xx. Its prime factorizatio ...
- 完全平方数 HYSBZ - 2440 (莫比乌斯函数容斥)
完全平方数 HYSBZ - 2440 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些 数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而 这丝毫不影响他对其他 ...
- C - Visible Trees HDU - 2841 -莫比乌斯函数-容斥
C - Visible Trees HDU - 2841 思路 :被挡住的那些点(x , y)肯定是 x 与 y不互质.能够由其他坐标的倍数表示,所以就转化成了求那些点 x,y互质 也就是在 1 - ...
- HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- BZOJ 2301 Problem b (莫比乌斯反演+容斥)
这道题和 HDU-1695不同的是,a,c不一定是1了.还是莫比乌斯的套路,加上容斥求结果. 设\(F(n,m,k)\)为满足\(gcd(i,j)=k(1\leq i\leq n,1\leq j\le ...
- bzoj2440 完全平方数 莫比乌斯值+容斥+二分
莫比乌斯值+容斥+二分 /** 题目:bzoj2440 完全平方数 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2440 题意:求第k个小x数 ...
随机推荐
- Mycat节点扩缩容及高可用集群方案
数据迁移与扩容实践: 工具目前从 mycat1.6,准备工作:1.mycat 所在环境安装 mysql 客户端程序. 2.mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包. 3.对 ...
- LeetCode(85):最大矩形
Hard! 题目描述: 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [ ["1","0",&quo ...
- 爬虫----beautifulsoup的简单使用
beautifulSoup使用: 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据. pip3 install beautifulsoup4 解析器 Beau ...
- js--基础(对象、数组、函数、if语句、while语句、do while语句、continue语句、break语句)
三.流程控制:1.单行语句var age =20;//单行语句 2.复合语句花括号包含起来的与聚集和叫做复合语句,一对花括号表示一个复合语句 ,处理时可以当成一个单行语句来看待,一般复合句与叫做代码块 ...
- selenium 操作键盘
send_keys(Keys.ENTER) 按下回车键send_keys(Keys.TAB) 按下Tab制表键send_keys(Keys.SPACE) 按下空格键spacesend_keys(Kye ...
- python之ORM操作
1. SQLalchemy简介 SQLAlchemy是一个开源的SQL工具包,基本Python编程语言的MIT许可证而发布的对象关系映射器.SQLAlchemy提供了“一个熟知的企业级全套持久性模式, ...
- WCF三种通信方式
一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...
- GO语言标准库—命令行参数解析FLAG
flag包是Go语言标准库提供用来解析命令行参数的包,使得开发命令行工具更为简单 常用方法 1.flag.Usage 输出使用方法,如linux下ls -h的帮助输出 2.flag.Type(参数名, ...
- sql select中加入常量列
string sql="select a,b,'常量' as c from table" 注:单引号' ' 很重要,否则编译时会把其看成查询参数,从而提示参数未指定错误
- [转]Spring Boot修改最大上传文件限制:The field file exceeds its maximum permitted size of 1048576 bytes.
来源:http://blog.csdn.net/awmw74520/article/details/70230591 SpringBoot做文件上传时出现了The field file exceeds ...