AcWing 231. 天码 (容斥)打卡
题目:https://www.acwing.com/problem/content/233/
题意:给你n个不同的数,让你选取一个四元组,gcd为1,让你求这样的四元组数量是多少
思路:我们单独直接去算肯定不行,正难反易,我们可以用总的减去其他gcd不是1的,也就是四个数同时有一个相同且不是1的因子,然后我们按gcd值分组
但是中间有很多分组其实有重复的值,比如 2,3 那么 6就是他们重复的,这个题不能n^2过,我们只能拆每个数的因子,然后用这些因子构造出其他与当前
数构造出不是1因子的个数
#include<bits/stdc++.h>
#define ll long long
#define mod 1000000007
#define maxn 100005
using namespace std;
ll n,a[maxn],cnt;
int vis[maxn];
int flag[maxn];
ll prime[maxn];
ll C(ll n,ll m){
return n*(n-)*(n-)*(n-)/;
}
void make(ll x){
cnt=;
for(int i=;i*i<=x;i++){
if(x%i==){
prime[cnt++]=i;
while(x%i==) x/=i;
}
}
if(x>) prime[cnt++]=x;
for(int i=;i<(<<cnt);i++){
ll cur=;
ll num=;
for(int j=;(i>>j)>;j++){
if((i>>j)&){
num++;
cur*=prime[j];
}
}
vis[cur]++;
flag[cur]=num;
}
}
int main()
{
while(scanf("%lld",&n)!=EOF){
memset(vis,,sizeof(vis));
memset(flag,,sizeof(flag));
for(int i=;i<n;i++){
scanf("%lld",&a[i]);
make(a[i]);
}
ll sum=C(n,);
for(int i=;i<=;i++){
if(flag[i]&){
sum-=C(vis[i],);
}
else{
sum+=C(vis[i],);
}
}
printf("%lld\n",sum);
}
}
AcWing 231. 天码 (容斥)打卡的更多相关文章
- AcWing 214. Devu和鲜花 (容斥)打卡
Devu有N个盒子,第i个盒子中有AiAi枝花. 同一个盒子内的花颜色相同,不同盒子内的花颜色不同. Devu要从这些盒子中选出M枝花组成一束,求共有多少种方案. 若两束花每种颜色的花的数量都相同,则 ...
- 【BZOJ2339】卡农(递推,容斥)
[BZOJ2339]卡农(递推,容斥) 题面 BZOJ 题解 先简化一下题意: 在\([1,2^n-1]\)中选择不重复的\(m\)个数,使得他们异或和为\(0\)的方案数. 我们设\(f[i]\)表 ...
- [SPOJ] DIVCNT2 - Counting Divisors (square) (平方的约数个数前缀和 容斥 卡常)
题目 vjudge URL:Counting Divisors (square) Let σ0(n)\sigma_0(n)σ0(n) be the number of positive diviso ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- hdu 5664 Lady CA and the graph(树的点分治+容斥)
题意: 给你一个有n个点的树,给定根,叫你找第k大的特殊链 .特殊的链的定义:u,v之间的路径,经过题给的根节点. 题解:(来自BC官方题解) 对于求第k大的问题,我们可以通过在外层套一个二分,将其转 ...
- min-max容斥学习笔记
min-max容斥学习笔记 前置知识 二项式反演 \[ f(n)=\sum_{i=0}^n\binom{n}{i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^{ ...
- BZOJ4671 异或图(容斥+线性基)
题意 定义两个结点数相同的图 \(G_1\) 与图 \(G_2\) 的异或为一个新的图 \(G\) ,其中如果 \((u, v)\) 在 \(G_1\) 与 \(G_2\) 中的出现次数之和为 \(1 ...
- LOJ#6503.「雅礼集训 2018 Day4」Magic[容斥+NTT+启发式合并]
题意 \(n\) 张卡牌 \(m\) 种颜色,询问有多少种本质不同的序列满足相邻颜色相同的位置数量等于 \(k\). 分析 首先本质不同不好直接处理,可以将同种颜色的卡牌看作是不相同的,求出答案后除以 ...
- [CF1086E]Beautiful Matrix(容斥+DP+树状数组)
给一个n*n的矩阵,保证:(1)每行都是一个排列 (2)每行每个位置和上一行对应位置不同.求这个矩阵在所有合法矩阵中字典序排第几.考虑类似数位DP的做法,枚举第几行开始不卡限制,那么显然之前的行都和题 ...
随机推荐
- 【HDOJ6583】Typewriter(SAM,DP)
题意:给定一个由小写字母组成的字符串,每次可以花费p在串后加上任意一个字母,花费q在串后复制一个当前串的子串,问生成字符串的最小花费 n<=2e5,1<=p,q<2^31 思路: S ...
- Delphi 如何在程序中执行动态生成的Delphi代码
如何在程序中执行动态生成的Delphi代码 经常发现有人提这类问题,或者提问内容最后归结成这种问题 前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧. 这里 ...
- element菜单默认展开和选中
这两个属性, :default-openeds="openeds" default-active="/networkConfig"中设置的要与数组中的index ...
- BUUCTF | [SUCTF 2019]CheckIn
感觉这题师傅们已经写得很详细了,我就做一个思路梳理吧,顺道学一波.user.ini 步骤: 1.上传一个“.user.ini”文件 2.上传自己的马“a.jpg” 3.菜刀连接 "http: ...
- Unity编程标准导引-3.4 Unity中的对象池
本文为博主原创文章,欢迎转载.请保留博主链接http://blog.csdn.net/andrewfan Unity编程标准导引-3.4 Unity中的对象池 本节通过一个简单的射击子弹的示例来介绍T ...
- 【c#技术】一篇文章搞掂:Newtonsoft.Json Json.Net
一.介绍 Json.Net是一个.Net高性能框架. 特点和好处: 1.为.Net对象和JSON之间的转换提供灵活的Json序列化器: 2.为阅读和书写JSON提供LINQ to JSON: 3.高性 ...
- (转)ping: www.baidu.com: Name or service not known centos7 -bash: ifconfig: command not found
[root@mysqlcentos01 ~]# ping www.baidu.com ping: www.baidu.com: Name or service not known [root@mysq ...
- 【原】git命令行查看全部分支与远程分支不同步问题
git branch -a 查看全部分支 git fetch 重新拉一下分支
- soj#552 449E Jzzhu and Squares
分析 https://www.cnblogs.com/Memory-of-winter/p/11209128.html 代码 #include<bits/stdc++.h> using n ...
- centos清理缓存
释放网页缓存(To free pagecache): echo 1 > /proc/sys/vm/drop_caches 释放目录项和索引(To free dentries and inodes ...