「题解」:x
问题 A: x
时间限制: 1 Sec 内存限制: 256 MB
题面
题面谢绝公开。
题解
赛时想到了正解并且对拍了很久。对拍没挂,但是评测姬表示我w0了……一脸懵逼。
不难证明,如果对于两个数字$i,j$,$gcd_{i,j}>1$的话,那么这两个数字必定分在一组内,否则不满足条件。
因此考虑对每一个数字质因数分解。包含同一质因数的数字不能分在同一集合。
此时只需用并查集维护集合个数。最后统计集合分配即可。
注意:每一个1都可以单独分配在一个集合里使得答案满足条件。因此每一个1都应单独放在一个集合中。特判即可。
另外,直接质因数分解会T掉。事先筛一遍素数即可。(用了最慢的筛法,实测可过)
#include<bits/stdc++.h>
#define int long long
#define rint register int
#define read(A) A=init()
#define mod 1000000007
using namespace std;
inline int init()
{
int a=,b=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')b=-;ch=getchar();}
while(ch>=''&&ch<=''){a=(a<<)+(a<<)+ch-'';ch=getchar();}
return a*b;
}
int ToT,n,a[],sum,prime[],tot;
int cnt,cp[],pc[],fa[];
bool vis[],isnt[];
vector <int> v[];
inline int get_fa(int x){return (fa[x]==x)?x:fa[x]=get_fa(fa[x]);}
inline int gcd(int A,int B){return (B==)?A:gcd(B,A%B);}
inline void I_get()
{
for(rint i=;i<=;++i)
{
if(!isnt[i])
{
prime[++tot]=i;int lin=;
while(lin*i<=)isnt[lin*i]=,lin++;
}
}
}
inline int qpow(int x,int y)
{
int num=;
while(y)
{
if(y&)num=num*x%mod;
x=x*x%mod;y>>=;
}
return num;
}
inline void merge(int x,int y)
{
int fx=get_fa(x);
int fy=get_fa(y);
if(fx!=fy)sum--,fa[fy]=fx;
return ;
}
inline void Devide(int id)
{
int x=a[id];
for(rint i=;prime[i]<=sqrt(x);++i)
{
if(x%prime[i]==)
{
x/=prime[i];while(x%prime[i]==)x/=prime[i];
if(!vis[prime[i]])
{
vis[prime[i]]=;cp[++cnt]=prime[i];pc[prime[i]]=cnt;
v[cnt].clear();
v[cnt].push_back(id);
}
else v[pc[prime[i]]].push_back(id);
}
}
if(x>)
{
if(!vis[x])
{
vis[x]=;cp[++cnt]=x;pc[x]=cnt;
v[cnt].clear();
v[cnt].push_back(id);
}
else v[pc[x]].push_back(id);
}
return ;
}
signed main()
{
read(ToT);I_get();
while(ToT--)
{
read(n);sum=n;
cnt=;
memset(vis,,sizeof(vis));
for(rint i=;i<=n;++i)
{
read(a[i]);fa[i]=i;
if(a[i]!=)Devide(i);
}
for(rint i=;i<=cnt;++i)
{
int lin=v[i][];
for(rint j=;j<v[i].size();++j)
merge(lin,v[i][j]);
}
printf("%lld\n",(qpow(,sum)-+mod)%mod);
continue;
}
}
「题解」:x的更多相关文章
- 「题解」「美团 CodeM 资格赛」跳格子
目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...
- 「题解」「HNOI2013」切糕
文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...
- 「题解」JOIOI 王国
「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts ...
- 「题解」:[loj2763][JOI2013]现代豪宅
问题 A: 现代豪宅 时间限制: 1 Sec 内存限制: 256 MB 题面 题目描述 (题目译自 $JOI 2013 Final T3$「現代的な屋敷」) 你在某个很大的豪宅里迷路了.这个豪宅由东 ...
- 「题解」:$Six$
问题 A: Six 时间限制: 1 Sec 内存限制: 512 MB 题面 题面谢绝公开. 题解 来写一篇正经的题解. 每一个数对于答案的贡献与数本身无关,只与它包含了哪几个质因数有关. 所以考虑二 ...
- 「题解」:$Smooth$
问题 A: Smooth 时间限制: 1 Sec 内存限制: 512 MB 题面 题面谢绝公开. 题解 维护一个队列,开15个指针,对应前15个素数. 对于每一次添加数字,暴扫15个指针,将指针对应 ...
- 「题解」:Kill
问题 A: Kill 时间限制: 1 Sec 内存限制: 256 MB 题面 题面谢绝公开. 题解 80%算法 赛时并没有想到正解,而是选择了另一种正确性较对的贪心验证. 对于每一个怪,我们定义它的 ...
- 「题解」:y
问题 B: y 时间限制: 1 Sec 内存限制: 256 MB 题面 题面谢绝公开. 题解 考虑双向搜索. 定义$cal_{i,j,k}$表示当前已经搜索状态中是否存在长度为i,终点为j,搜索过边 ...
- 「题解」:07.16NOIP模拟T1:礼物
问题 A: 礼物 时间限制: 1 Sec 内存限制: 256 MB 题面 题目描述 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生 日礼物. 商店里一共有种礼物.夏川每得到一种礼 ...
随机推荐
- MapFields和并行计算(OpenFOAM)
这几天研究了一下OpenFOAM里的MapFields和并行计算,总结一下. Case 1 先进行并行计算 SetFields 初始化流场 decomposePar 把初始化好的流场分块 mpirun ...
- Thread.Join理解
Thread.Join:Blocks the calling thread until a thread terminates MainThread里面起了一个SubThread,从SubThread ...
- python3 获取电脑磁盘、CPU、内存使用情况
import psutil # cd C:\Python36-32\Scripts pip install psutil # 获取本机磁盘使用率和剩余空间G信息 def get_disk_info() ...
- PHP ftp_chmod() 函数
定义和用法 ftp_chmod() 函数设置 FTP 服务器上指定文件的权限. 如果成功,该函数返回新的权限.如果失败,则返回 FALSE 和一个警告. 语法 ftp_chmod(ftp_connec ...
- WebStorm编辑器
Webstorm的安装和免费使用 IntelliJ IDEA 注册码 (webstorm注册码):http://idea.lanyus.com/ (已经不能获取注册码了,之前的注册码可以重复使用) 安 ...
- docker集群故障迁移
docker swarm 故障时候镜像迁移(无法添加新节点的时候)生产docker集群出现了故障,无法正常添加删除节点.在这样的情况下只能想办法把故障集群的镜像迁移到新的docker集群当中.将发生故 ...
- python Pool并行执行
# -*- coding: utf-8 -*- import time from multiprocessing import Pool def run(fn): #fn: 函数参数是数据列表的一个元 ...
- JDK8新特性之重复注解
什么是重复注解 下面是JDK8中的重复注解(java.lang.annotation.Repeatable)定义的源码. @Documented @Retention(RetentionPolicy. ...
- java-day23
事务的四大特征: 1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败. 2.持久性:当事务提交或回滚后,数据库会持久化的保存数据. 3.隔离性:多个事务之间,相互独立. 4.一致性:事务 ...
- Ubuntu 14.04 64位上安装wps office软件
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/tao_627/article/details/24179933 废话少说,仅仅给出方法供各位參考! ...