Codeforces 338 D. GCD Table
http://codeforces.com/problemset/problem/338/D
题意:
有一张n*m的表格,其中第i行第j列的数为gcd(i,j)
给出k个数
问在这张表格中是否 有某一行中连续的某一部分 就是 这k个数
题意转化:
是否存在 一对i,j
满足gcd(i,j)=a1,gcd(i,j+1)=a2,…… gcd(i,j+k-1)=ak
直观上感觉:
i要满足的必要条件是 i | lcm(a1,a2……ak)
j要满足的必要条件是
j= a1*k1,j+1=a2*k2……,j+k-1=ak*k_k
相当于
j ≡ 0 mod a1
j ≡ -1 mod a2
……
j≡ -(k-1) mod ak
利用扩展中国剩余定理可以求出 满足条件的最小的j
我们令i=lcm(a1,a2……ak)
去检验 是否满足 gcd(i,j+m-1)= a_m m∈[1,k]
若满足条件输出YES,否则输出NO
为什么用满足必要条件的最小的i和j检验?
证明 i= lcm(a1,a2……ak)是唯一满足要求的i:
若还存在一个 i*x 满足条件,那么
将 i , i*x,j 质因数分解,存在一个 p^k 能整除i*x、j,不能整除i
∵ i= lcm(a1,a2……ak)
∴i的质因数分解的任意一项 必须能整除 a中的某一个
而 p^k 不能整除a 中的任意一个,否则i的质因数分解包含 p^k
证明 满足 j ≡ -(h-1) mod a[h] 的最小的j一定满足要求
若存在一个j*x 满足条件,而j不满足条件
即 存在一个h,满足 gcd(i,j+h-1)< a[h],gcd(i,j*x+h-1)= a[h]
将 j,j*x ,a[h]质因数分解,j*x 中 存在一个p^k2,满足
j 中 为 p^k1,a[h] 中为 p^k2 , 且 k1<k2
∵ j ≡ -(h-1) mod a[h]
即 j= a[h]*s - h+1
∴ j+h-1 = a[h]*s,所以k1>=k2
所以 最小的j一定满足要求
#include<cstdio>
#include<iostream> using namespace std; typedef long long LL; #define N 10001 LL a[N]; LL n1,a1; LL lcm; template<typename T>
void read(T &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} LL gcd(LL a,LL b) { return !b ? a : gcd(b,a%b); } bool judge_lcm(int k,LL n)
{
lcm=;
for(int i=;i<=k;++i)
{
lcm=lcm/gcd(lcm,a[i])*a[i];
if(lcm>n) return false;
}
return true;
} void exgcd(LL a,LL b,LL &x,LL &y)
{
if(!b) { x=; y=; return;}
exgcd(b,a%b,y,x); y-=a/b*x;
} LL mul(LL a,LL b,LL mod)
{
LL res=;
while(b)
{
if(b&) { b--; res+=a; res%=mod; }
a<<=; a%=mod; b>>=;
}
return res;
} LL merge(LL n2,LL a2)
{
LL d=gcd(n1,n2),c=a2-a1;
if(c%d) return -;
LL x,y;
exgcd(n1/d,n2/d,x,y);
LL mod=n2/d;
x=(x%mod+mod)%mod;
LL k=(mul(c/d,x,mod)%mod+mod)%mod;
a1=(a1+n1*k%(mod*n1))%(mod*n1);
n1*=mod;
return a1;
} int main()
{
LL n,m; int k;
read(n); read(m); read(k);
for(int i=;i<=k;++i) read(a[i]);
if(!judge_lcm(k,n))
{
puts("NO");
return ;
}
n1=a[]; a1=;
LL j=a1;
for(int i=;i<=k;++i)
{
j=merge(a[i],a[i]-(i-));
if(j==-) { puts("NO"); return ; }
}
if(!j) j=lcm;
if(j+k->m) { puts("NO"); return ;}
for(int i=;i<=k;++i)
if(gcd(lcm,j+i-)!=a[i]) { puts("NO"); return ; }
puts("YES");
}
Codeforces 338 D. GCD Table的更多相关文章
- CF 338 D GCD Table(CRT)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 给定一个序列,a[1 ..k],问是否存在(i , ...
- Codeforces 583 DIV2 GCD Table 贪心
原题链接:http://codeforces.com/problemset/problem/583/C 题意: 大概就是给你个gcd表,让你还原整个序列. 题解: 由$GCD(a,a)=a$,我们知道 ...
- 【Codeforces 582A】 GCD Table
[题目链接] 点击打开链接 [算法] G中最大的数一定也是a中最大的数. G中次大的数一定也是a中次大的数. 第三.第四可能是由最大和次大的gcd产生的 那么就不难想到下面的算法: ...
- 【Codeforces 582A】GCD Table
[链接] 我是链接,点我呀:) [题意] 给你一个数组A[]经过a[i][j] = gcd(A[i],A[j])的规则生成的二维数组 让你求出原数组A [题解] 我们假设原数组是A 然后让A数组满足A ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- Katalon Studio学习笔记(二)——请求响应中文乱码解决方法
Katalon Studio接口测试发现返回的中文消息是乱码,这是因为KS的编码格式是UTF-8,因此导致中文字体出现乱码.如下图所示: 在我们的系统中添加一个名字为JAVA_TOOL_OPTIONS ...
- 软件测试--w模型
W模型 优点:开发把随着整个开发周期,需求.和设计同样要测试,更早的介入测试,可以发现初期的缺陷,修复成本低:分阶段工作方便项目整体管理: 缺点:开发和测试依然是线性关系,需求的变更和调整,依然不方便 ...
- 1分钟,通过docker-compose 搭建zookeeper 集群
一.创建三节点 zookeeper 集群 将 docker-compose.yml 保存到当前命令行目录下 docker-compose.yml 文件 version: '2' networks: z ...
- 在Ubuntu虚拟机上安装DVWA
学习资料来源:https://www.neddos.tech/?p=107 最后更新时间: 190122·17:41 1> 什么是DVWA(Damn Vulnerable Web Applica ...
- PAT甲题题解-1078. Hashing (25)-hash散列
二次方探测解决冲突一开始理解错了,难怪一直WA.先寻找key%TSize的index处,如果冲突,那么依此寻找(key+j*j)%TSize的位置,j=1~TSize-1如果都没有空位,则输出'-' ...
- 1079. Total Sales of Supply Chain (25)-求数的层次和叶子节点
和下面是同类型的题目,只不过问的不一样罢了: 1090. Highest Price in Supply Chain (25)-dfs求层数 1106. Lowest Price in Supply ...
- Final版本互评——杨老师粉丝群《PinBall》
基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着民族自信的觉醒,民主文化越来越受到重视,语文在高考中的比重也不断增加,在这种大环境下,成 ...
- 审评(HelloWorld团队)
炸弹人:我觉得炸弹人的构想很不错,很像以前玩的qq堂,不过上课时讲的不够深入,我没有找到项目的思路,项目的介绍也很粗糙,后面说的目标很大,希望你可以实现,我觉得越多的功能,就意味着越多的工作量,总的来 ...
- Inside the Social Network’s (Datacenter) Network
摘要: 大量服务提供商投资越来越多的更大数据中心来保证基础计算需求以支持他们的服务.因此,研究人员和行业从业者都集中了大量的努力设计网络结构有效互连和管理流量以保证这些数据中心的性能.不幸的是,数据中 ...
- [转帖]LNMP组件安装
https://lnmp.org/install.html 系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/M ...