CF#338D. GCD Table
简单的中国剩余定理练习。
首先行数一定是$lcm$,然后只要确定最小的列数就能判定解合不合法了。
我们可以得到线性模方程组:
$y \equiv 0 \pmod{a_1}$
$y+1 \equiv 0 \pmod {a_2}$
$y+2 \equiv 0 \pmod {a_3}$
$...$
$y+n \equiv 0 \pmod {a_{n+1}}$
然后CRT搞出来一组解,暴力判判就OK了。
//CF338D
//by Cydiater
//2017.2.20
#include <iostream>
#include <queue>
#include <map>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
#include <ctime>
#include <bitset>
#include <set>
#include <vector>
#include <complex>
using namespace std;
#define ll long long
#define up(i,j,n) for(ll i=j;i<=n;i++)
#define down(i,j,n) for(ll i=j;i>=n;i--)
#define cmax(a,b) a=max(a,b)
#define cmin(a,b) a=min(a,b)
const ll MAXN=1e5+5;
const ll oo=1LL<<50;
inline ll read(){
char ch=getchar();ll x=0,f=1;
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
ll N,M,K,m[MAXN],lcm=1,a[MAXN],a1,m1;
namespace solution{
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
void exgcd(ll a,ll b,ll &x,ll &y){
if(!b){x=1;y=0;return;}
exgcd(b,a%b,y,x);
y-=a/b*x;
}
void CRT(){
a1=a[1];m1=m[1];
up(i,2,K){
ll a2=a[i],m2=m[i],x,y,d=gcd(m1,m2);
if((a2-a1)%d){a1=oo;return;}
exgcd(m1,m2,x,y);
ll mod=m2/d;
x=((x*((a2-a1)/d)%mod+mod)%mod+mod)%mod;
a1+=x*m1;
m1=m1*m2/d;
a1=(a1+m1)%m1;
}
}
void Prepare(){
N=read();M=read();K=read();
up(i,1,K){
m[i]=read();a[i]=1-i;
lcm=lcm/gcd(lcm,m[i])*m[i];
}
}
void Solve(){
if(lcm>N)puts("NO");
else{
CRT();
if(a1+K-1>M||a1<0) puts("NO");
else{
if(a1==0)a1=lcm;
if(a1+K-1>M){
puts("NO");
return;
}
up(i,1,K)if(gcd(lcm,a1+i-1)!=m[i]){
puts("NO");
return;
}
puts("YES");
}
}
}
}
int main(){
//freopen("input.in","r",stdin);
using namespace solution;
Prepare();
Solve();
return 0;
}
CF#338D. GCD Table的更多相关文章
- Codeforces 338D GCD Table 中国剩余定理
主题链接:点击打开链接 特定n*m矩阵,[i,j]分值为gcd(i,j) 给定一个k长的序列,问能否匹配上 矩阵的某一行的连续k个元素 思路: 我们要求出一个解(i,j) 使得 i<=n &am ...
- codeforces 338D GCD Table
什么都不会只能学数论QAQ 英文原题不贴了 题意: 有一张N*M的表格,i行j列的元素是gcd(i,j)读入一个长度为k,元素大小不超过10^12的序列a[1..k],问这个序列是否在表格的某一行中出 ...
- 【CF#338D】GCD Table
[题目描述] 有一张N,M<=10^12的表格,i行j列的元素是gcd(i,j) 读入一个长度不超过10^4,元素不超过10^12的序列a[1..k],问是否在某一行中出现过 [题解] 要保证g ...
- Codeforces Round #323 (Div. 2) C.GCD Table
C. GCD Table The GCD table G of size n × n for an array of positive integers a of length n is define ...
- Codeforces Round #323 (Div. 1) A. GCD Table
A. GCD Table time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- Codeforces Round #323 (Div. 2) C. GCD Table 暴力
C. GCD Table Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/583/problem/C ...
- SPOJ PGCD 4491. Primes in GCD Table && BZOJ 2820 YY的GCD (莫比乌斯反演)
4491. Primes in GCD Table Problem code: PGCD Johnny has created a table which encodes the results of ...
- Codeforces Round #323 (Div. 2) C. GCD Table map
题目链接:http://codeforces.com/contest/583/problem/C C. GCD Table time limit per test 2 seconds memory l ...
- CF582A GCD Table
A. GCD Table time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
随机推荐
- POJ - 3026 Borg Maze bfs+最小生成树。
http://poj.org/problem?id=3026 题意:给你一个迷宫,里面有 ‘S’起点,‘A’标记,‘#’墙壁,‘ ’空地.求从S出发,经过所有A所需要的最短路.你有一个特殊能力,当走到 ...
- CodeForces - 617E XOR and Favorite Number 莫队算法
https://vjudge.net/problem/CodeForces-617E 题意,给你n个数ax,m个询问Ly,Ry, 问LR内有几对i,j,使得ai^...^ aj =k. 题解:第一道 ...
- Oracle安装部署之 oracle 11g install linux
#!/bin/bash#Purpose:Create and config oracle install.#Usage:Log on as the superuser('root') #1.creat ...
- 插入排序之python
插入排序( Insert sort) 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入: 由于不需要全部都比较完,所以排序速度优于冒泡和选择排序. #插入排序就像是斗地 ...
- python3学习笔记(1)_string
#python学习笔记 17/07/07 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习 # ...
- InfluxDB通过HTTP API
SELECT "value" FROM "online_user_counter" curl -POST http://localhost:8086/query ...
- OKEx货币对价格数量长度及精度
长度 precisions = [["bch_btc","0.001","0.00000001"], ["ltc_btc" ...
- Memcached与redis的比较--stackoverflow(转)
原文:http://blog.nosqlfan.com/html/3729.html 这两年Redis火得可以,Redis也常常被当作Memcached的挑战者被提到桌面上来.关于Redis与Memc ...
- 通过phantomjs 进行页面截图
本文章参考了使用phantomjs操作DOM并对页面进行截图需要注意的几个问题 及phantomjs使用说明 这两篇文章,初次接触phantomjs的童鞋可以去看下这两篇原文 在学习中可以看下 pha ...
- RSA加密常用的填充方式 以及 常见错误
一.RSA加密常用的填充方式 1.RSA_PKCS1_PADDING 输入:比 RSA modulus 短至少11个字节.如果输入的明文过长,必须切割,然后填充 输出:和modulus一样长 根据这个 ...