题目链接:

题目

D. Remainders Game

time limit per test 1 second

memory limit per test 256 megabytes

问题描述

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.

输入

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).

输出

Print "Yes" (without quotes) if Arya has a winning strategy independent of value of x, or "No" (without quotes) otherwise.

样例

input

4 5

2 3 5 12

output

Yes

input

2 7

2 3

output

No

题意

给你n个数和一个k,求x%k的值,没有告诉你x是多少,只告诉你能够计算x%ci的值。问能不能根据这n次测试唯一确定x%k。

题解

思路1:

结论:无法唯一确定x%k <==> k不能整除lcm(c1,...,cn);

充分性:

无法唯一确定x%k --> 存在两个数x1,x2对于任意的ci取余的值都相等,对k取值的值却不等。

  • x1,x2对任意的ci取余都相等 --> ci|(x1-x2) --> lcm(ci)|(x1-x2).
  • x1,x2对k取余的值不等 --> k不整除(x1-x2) --> k不整除lcm(ci)

必要性:

我们令x1=2*lcm(ci),x2=lcm(ci),则易知有x1,x2对于任意的ci取余的值都相等,且因为k不能整除lcm(ci),所以x1,x2对k取余的值不等。 所以ci不能确定x%k的值。

思路2:

题目已经给我们n个线性同余方程:x%c[i]==a[i]%c[i]。

由于a数组是由我们任意选择的,所以我们可以构造所有的a相等,从而使得对于任意的i,j,有a[i]%(gcd(ci,cj))等于a[j]%(gcd(ci,cj))。这样,由中国剩余定理就可以知道x%(lcm(c1,...,cn))有唯一解了。 那么我们只要使得k能整除lcm(c1,...,cn)那么易知x%k的值也是固定的。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; typedef __int64 LL; LL n, k; LL gcd(LL a, LL b) { return b == 0 ? a : gcd(b, a%b); }
LL lcm(LL a, LL b) { return a*b / gcd(a, b); } int main() {
scanf("%I64d%I64d", &n, &k);
LL lcm_ci = 1;
bool su = 0;
for (int i = 1; i <= n; i++) {
LL x;
scanf("%I64d", &x);
lcm_ci = lcm(lcm_ci, x);
lcm_ci = gcd(k, lcm_ci);
if (lcm_ci == k) {
su = 1; break;
}
}
if (su) puts("Yes");
else puts("No");
return 0;
}

Codeforces Round #360 (Div. 2) D. Remainders Game 中国剩余定理的更多相关文章

  1. Codeforces Round #360 (Div. 2) D. Remainders Game

    D. Remainders Game time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  2. Codeforces Round #360 (Div. 2) D. Remainders Game 数学

    D. Remainders Game 题目连接: http://www.codeforces.com/contest/688/problem/D Description Today Pari and ...

  3. Codeforces Round #360 (Div. 1) D. Dividing Kingdom II 暴力并查集

    D. Dividing Kingdom II 题目连接: http://www.codeforces.com/contest/687/problem/D Description Long time a ...

  4. Codeforces Round #360 (Div. 2) C. NP-Hard Problem 水题

    C. NP-Hard Problem 题目连接: http://www.codeforces.com/contest/688/problem/C Description Recently, Pari ...

  5. Codeforces Round #360 (Div. 2) B. Lovely Palindromes 水题

    B. Lovely Palindromes 题目连接: http://www.codeforces.com/contest/688/problem/B Description Pari has a f ...

  6. Codeforces Round #360 (Div. 2) A. Opponents 水题

    A. Opponents 题目连接: http://www.codeforces.com/contest/688/problem/A Description Arya has n opponents ...

  7. Codeforces Round #360 (Div. 1)A (二分图&dfs染色)

    题目链接:http://codeforces.com/problemset/problem/687/A 题意:给出一个n个点m条边的图,分别将每条边连接的两个点放到两个集合中,输出两个集合中的点,若不 ...

  8. Codeforces Round #360 (Div. 1) D. Dividing Kingdom II 并查集求奇偶元环

    D. Dividing Kingdom II   Long time ago, there was a great kingdom and it was being ruled by The Grea ...

  9. Codeforces Round #360 (Div. 2) E. The Values You Can Make DP

    E. The Values You Can Make     Pari wants to buy an expensive chocolate from Arya. She has n coins, ...

随机推荐

  1. 可以伸缩的查询面板 (searchBar)

    最近有这样的需求,一个页面查询条件特别多,一次全部展示出来的话就占用大量的空间,所以分成了两类,简单搜索和高级搜索,当点击高级搜索的时候就会全部显示. 这样就存在一个问题,页面(navTab,dial ...

  2. 【Unity3D】中的空引用 Null Reference Exception

    Null Reference Exception : Object reference not set to an instance of an object. 异常:空引用,对象的引用未设置到对象的 ...

  3. 20141017--异常语句try-catch

    //try-catch 尝试(try)-抓获(catch) try//尝试,保护起来,使程序出错也能执行 { //确定不会出错时不要用try,当不确定时使用try-catch可以捕获错误, int i ...

  4. UI4_UIStepper与UIProgressView

    // // ViewController.m // UI4_UIStepper与UIProgressView // // Created by zhangxueming on 15/7/7. // C ...

  5. IE6和IE8细节问题

    1.对于使用jQuery的ajax.IE6要求使用带有全部的属性:例如IE对下面代码中type:"POST",有严格的要求,如果没有该属性,则无法向后他发送请求 $.ajax({ ...

  6. ThinkPHP中的模型二

    ThinkPHP中的模型 1.为什么要创建数据对象 案例:使用ThinkPHP完成部门管理 ① 设计数据库 ② 创建Dept控制器 路径:./Application/Admin/Controller创 ...

  7. 博客转移到 海胖网 http://haipz.com/ 希望你能支持我们!

    博客转移到 海胖网 http://haipz.com/ 希望你能支持我们! 博客转移到 海胖网 http://haipz.com/ 希望你能支持我们! 博客转移到 海胖网 http://haipz.c ...

  8. OpenSUSE 安装并启动Tomcat

    安装.用YsST2搜索tomcat安装就好了.不过版本肯定不如官网的新,笔者用的是7.0.42,最新的已经到8.X了. 启动.在服务管理器中找到tomcat,启动.

  9. [大牛翻译系列]Hadoop(14)MapReduce 性能调优:减小数据倾斜的性能损失

    6.4.4 减小数据倾斜的性能损失 数据倾斜是数据中的常见情况.数据中不可避免地会出现离群值(outlier),并导致数据倾斜.这些离群值会显著地拖慢MapReduce的执行.常见的数据倾斜有以下几类 ...

  10. spring boot单元测试(转)

    Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性.凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. ...