【16.56%】【codeforces 687B】Remainders Game
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
Today Pari and Arya are playing a game called Remainders.
Pari chooses two positive integer x and k, and tells Arya k but not x. Arya have to find the value
. There are n ancient numbers c1, c2, …, cn and Pari has to tell Arya
if Arya wants. Given k and the ancient values, tell us if Arya has a winning strategy independent of value of x or not. Formally, is it true that Arya can understand the value
for any positive integer x?
Note, that
means the remainder of x after dividing it by y.
Input
The first line of the input contains two integers n and k (1 ≤ n, k ≤ 1 000 000) — the number of ancient integers and value k that is chosen by Pari.
The second line contains n integers c1, c2, …, cn (1 ≤ ci ≤ 1 000 000).
Output
Print “Yes” (without quotes) if Arya has a winning strategy independent of value of x, or “No” (without quotes) otherwise.
Examples
input
4 5
2 3 5 12
output
Yes
input
2 7
2 3
output
No
Note
In the first sample, Arya can understand
because 5 is one of the ancient numbers.
In the second sample, Arya can’t be sure what
is. For example 1 and 7 have the same remainders after dividing by 2 and 3, but they differ in remainders after dividing by 7.
【题解】
题意:
让你猜x % k 的值
但是只告诉你k以及一系列x % ci;
做法:
根据中国剩余定理:
如果知道了
x % a;
x % b;
x % c;
x % d;
····
且a,b,c,d互质;
那么x % (abcd)就可以确定了;
那么因为要求x % k
所以对k进行质数分解;
各个质数肯定是互质的;
分解成k = p1^k1*p2^k2…pn^kn的形式
然后你还得知道这么一个东西
如果
a 是 b的倍数,即a %b==0
那么
x % a = y1
x % b = y2
那么y2 = y1 % b;
即
x = t1*a+ y1 ···①
x = t2*b + y2
因为a是b的倍数
所以①式总可以写成
x = t1*t3*b + y1的形式
显然y1 再对b取模就是y2了;
回到质数分解后
分解成k = p1^k1*p2^k2…pn^kn的形式
我们想知道
x % p1^k1
x % p2^k2
….
x % pn^kn
这样我们就能知道x %k了
根据上面的分析,我们只要在所给的ci里面找pi^ki的倍数就好了;
如果对于所有的t∈[1..n]总有数字ci是pt^kt的倍数;
因为如果ci是pt^kt的倍数,则x % ci知道了,相应的x%(pt^kt)按照上面的分析也能知道了->(x%ci) % (pt^kt)
既然知道了所有的x%pt^kt
那么就能求出x%k了;
#include <cstdio>
int n, k,cnt = 0;
int num[10000];
bool cover[10000] = { 0 };
int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d%d", &n, &k);
for (int i = 2;i <= k;i++)
if ((k%i) == 0)
{
int now = 1;
while ((k%i) == 0)
{
now = now*i;
k /= i;
}
num[++cnt] = now;//存的是p1^k1..pcnt^kcnt
}
for (int i = 1; i <= n; i++)
{
int x;
scanf("%d", &x);
for (int j = 1; j <= cnt; j++)
if (x % num[j] == 0)//如果是的x%pt^kt倍数,那么x%pt^kt就能求出来了
cover[j] = true;
}
for (int j = 1;j <= cnt;j++)
if (!cover[j])
{
puts("NO");
return 0;
}
puts("YES");
return 0;
}
【16.56%】【codeforces 687B】Remainders Game的更多相关文章
- 【 BowWow and the Timetable CodeForces - 1204A 】【思维】
题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...
- 【16.23%】【codeforces 586C】Gennady the Dentist
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【codeforces 807D】Dynamic Problem Scoring
[题目链接]:http://codeforces.com/contest/807/problem/D [题意] 给出n个人的比赛信息; 5道题 每道题,或是没被解决->用-1表示; 或者给出解题 ...
- 【codeforces 821E】Okabe and El Psy Kongroo
[题目链接]:http://codeforces.com/problemset/problem/821/E [题意] 一开始位于(0,0)的位置; 然后你每次可以往右上,右,右下3走一步; (x+1, ...
- 【81.82%】【codeforces 740B】Alyona and flowers
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【23.39%】【codeforces 558C】Amr and Chemistry
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【42.59%】【codeforces 602A】Two Bases
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【77.78%】【codeforces 625C】K-special Tables
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 【codeforces 755D】PolandBall and Polygon
time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
随机推荐
- Rick's RoTs -- Rules of Thumb for MySQL--转载
原文地址:http://mysql.rjweb.org/doc.php/ricksrots Brought to you by Rick James Here are 160+ tips, trick ...
- Loadrunner--基准测试的两种方法
2 练习基准测试方法1 2.1 问题 为登录业务设计场景. 2.2 方案 在控制台中使用循环多次的方式执行场景.(多次数) 2.3 步骤 实现此案例需要执行以下步骤: 步骤一: 1.打开控制台,如下图 ...
- element ui源码解析 -- button篇
要看源码就得从最简单的开始,button够简单的了,就从他开始吧. 安装依赖后源码目录在:node_modules/element-ui/packages中,可以看到这里的文件夹命名是不是很熟悉,就是 ...
- P2P网贷中的4种理财业务模式
线上3种 直投标:线上理财人直接购买借款人的标,平台只是起个"撮合"作用,收点借款人的服务费. 借款人不还钱,有的平台会帮"借款人"还 ...
- Python 奇葩语法
a = 1, 2, 3 赋值后的结果,a == (1, 2, 3),将一个元组(tuple)赋给了变量 a (1, 2) + (3, ) ⇒ (1, 2, 3),并不能说明 tuple 可以添加新的元 ...
- 数据类型总结——String(字符串类型)
相关文章 简书原文:https://www.jianshu.com/p/546a755c3eb6 数据类型总结——概述:https://www.cnblogs.com/shcrk/p/9266015. ...
- Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
原文地址: https://blog.csdn.net/yx0628/article/details/80873774 一个简单的Spring定时任务的 demo,全部代码见下载地址:https:// ...
- 如何解决安卓SDK无法下载Package的问题 分类: H1_ANDROID 2013-09-09 10:26 1199人阅读 评论(0) 收藏
转载自:http://jingyan.baidu.com/article/8275fc86dbe84046a03cf69d.html 有些用户在安装好Android SDK后,打开Android SD ...
- vs 外部依赖项、附加依赖项以及如何添加依赖项目
我们在 VS 中创建 Win32 控制台应用程序,vs 会为解决方案创建默认地创建 4 个 filters(资源管理器中没有对应的目录和文件夹): 头文件:一般为 .h 文件 外部依赖项 源文件:一般 ...
- teamview huawei
https://apkpure.com/add-on-huawei/com.teamviewer.quicksupport.addon.huawei 4.0/5 ( 5 Discussions ) ...