【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 ...
 
随机推荐
- 关于JS的面向对象总结
			
什么是面向对象: 对象由两部分构成:属性 和 方法: 面向对象的特点: 1.封装:对于相同功能的代码,放在一个函数中,以后再用到此功能,只需要调用即可,无需再重写:避免大量冗余代码: 专业话说:低耦合 ...
 - AspJpeg2.0组件教程完整版 aspjpeg教程...
			
AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩略图和图片水印,这与其为英文版本有着密切的关系 ...
 - Maven 异常:Project configuration is not up-to-date with pom.xml解决方案
			
一.异常信息: 导入maven工程后,出现如下错误: Description Resource Path Location TypeProject configuration ...
 - vue 用 :style动态修改带中划线的样式属性
			
今天在项目中遇到要用:style动态设置margin-top值,直接写发现报错.后来改成驼峰就成功了,记录一下 错误示范: <div class="testLeft ulData&qu ...
 - UVA 11280 - Flying to Fredericton SPFA变形
			
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&c ...
 - leetcode-combination sum and combination sum II
			
Combination sum: Given a set of candidate numbers (C) and a target number (T), find all unique combi ...
 - linux 查看 *.a *.so 符号表(zt)
			
objdump -tT libName.so | grep symbel symbolName nm -D libName.so | grep symbel symbolName 很多非常熟悉wind ...
 - DOS命令具体解释
			
net use $">\\ip\ipc$Content$nbsp;" " /user:" " 建立IPC空链接 net use $" ...
 - spark安装与调试
			
I---- 1---jdk and scala install ****zyp@ubuntu:~/Desktop/software$ tar xvf jdk-7u67-linux-i586.tar.g ...
 - java连接MongoDB查询导出为excel表格
			
背景 因为项目需求.每一个星期须要统计每一个公众号7天的訪问数,月底就须要统计一个月的訪问数,40多个公众号.每次手动统计都须要花费1个小时,总之是一项无技术耗时耗神的手工活. 于是.想写个程序来统计 ...