该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
最近徐老师刚刚学习了 dijktra 算法,准备实践一下,但是找不到题目怎么办呢?不如自己出数据吧!
于是徐老师先随机生成了 n 个整数 a1…an
现在徐老师要在这些点之间随机生成一些单向边表示一个点可以到达另一个点,于是徐老师设计了一个算法:
- 先枚举所有 x(1∼n)
- 在选中 x 的情况下枚举所有 y(x∼n)
- 若 x,y 满足 gcd(ax,ay)>1 则认为从 x 出发可以直接到达 y
接下来徐老师随机生成了 m 次询问,每次询问一组整数 (x,y),问从 x 出发是否存在路径能够到达 y,若能到达则输出 Yes,否则输出 No
现在徐老师已经生成了所有数据,他想和你对拍一下,请你也写一份代码解决这个问题
P.S. gcd(x,y) 是指计算 (x,y) 的最大公约数,特别的我们认为:
- gcd(0,x)=gcd(x,0)=x;
- gcd(0,0)=0;
- gcd(x,x)=x;
输入格式
第一行包含两个整数 n,m 含义如题。
第二行包含 n 个整数 a1…an。
接下来 m 行,每行包含两个整数 (x,y),代表一组询问。
输出格式
对于每次询问输出答案,若 x 出发能到达 y 则输出 Yes,否则输出 No
数据范围
对于 40% 的数据, n,m≤1000,0≤ai≤10
对于 80% 的数据, n,m≤1000,0≤ai≤500
对于 100% 的数据, n,m≤105,0≤ai≤1000,x≤y
输入样例
5 4
1 3 0 2 1
1 3
2 4
1 4
1 1
输出样例
No
Yes
No
Yes
样例解释
第一个询问,从 a1 到 a3,由于 gcd(1,0)=1,所以不能到达,输出 No。
第二个询问,从 a2 到 a4,可以通过 a3 到达,所以输出 Yes。
第三个询问,从 a1 到 a4,由于没有点的 gcd 值大于 1,所以不能到达,输出 No。
第四个询问,从 a1 到 a1,可以到达自身,所以输出 Yes。