【题目描述】

有一张N,M<=10^12的表格,i行j列的元素是gcd(i,j)

读入一个长度不超过10^4,元素不超过10^12的序列a[1..k],问是否在某一行中出现过

【题解】

要保证gcd(x,y)=a[i],显然x=lcm(a[1],a[2]……a[k])

然后y%a[1]=0,即(y+i-1)%a[i]=0

即y%a[1]=0

y%a[2]=-1

……

y%a[n]=-(n-1)

这就转化为了中国剩余定理

求出y之后,只需验证gcd(x,y+i-1)=a[i]即可

 /*************
CF#338D
by chty
2016.11.3
*************/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,m1,K,A,M,ans,lcm(),m[],a[];
inline ll read()
{
ll x=,f=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-; ch=getchar();}
while(isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
ll gcd(ll a,ll b) {return !b?a:gcd(b,a%b);}
void exgcd(ll a,ll b,ll &g,ll &x,ll &y)
{
if(b==) {x=; y=; g=a; return;}
exgcd(b,a%b,g,x,y);
ll t=x;x=y;y=t-a/b*y;
}
ll China()
{
for(ll i=;i<=K;i++) a[i]=-i;
A=a[],M=m[];
for(ll i=;i<=K;i++)
{
ll k,y,da=a[i]-A,g;
exgcd(M,m[i],g,k,y);
if(da%g) return -;
ll t=m[i]/g;
k*=da/g;
k=(k%t+t)%t;
A+=k*M;
M=M*m[i]/g;
A=(A+M)%M;
}
return A;
}
bool check()
{
if(lcm>n) return ;
ll ans=China();
if(ans<) return ;
if(ans==) ans=lcm;
if(ans+K->m1) return ;
for(ll i=;i<=K;i++) if(gcd(lcm,ans+i-)!=m[i]) return ;
return ;
}
int main()
{
//freopen("cin.in","r",stdin);
//freopen("cout.out","w",stdout);
n=read(); m1=read(); K=read();
for(ll i=;i<=K;i++) m[i]=read();
for(ll i=;i<=K;i++)
{
lcm=lcm/gcd(lcm,m[i])*m[i];
if(lcm>n) break;
}
check()?puts("YES"):puts("NO");
return ;
}

【CF#338D】GCD Table的更多相关文章

  1. 【Codeforces 582A】 GCD Table

    [题目链接] 点击打开链接 [算法] G中最大的数一定也是a中最大的数.          G中次大的数一定也是a中次大的数. 第三.第四可能是由最大和次大的gcd产生的 那么就不难想到下面的算法: ...

  2. 【Codeforces 582A】GCD Table

    [链接] 我是链接,点我呀:) [题意] 给你一个数组A[]经过a[i][j] = gcd(A[i],A[j])的规则生成的二维数组 让你求出原数组A [题解] 我们假设原数组是A 然后让A数组满足A ...

  3. 【laravel5.4】DB::table的操作

    基于laravel5.4版本的查询构造器的简单几个操作:(相对于TP3.2版本) //获取指定多行多列,二维,,对象 [select] $names = ''; $names = DB::table( ...

  4. 【CF#303D】Rotatable Number

    [题目描述] Bike是一位机智的少年,非常喜欢数学.他受到142857的启发,发明了一种叫做“循环数”的数. 如你所见,142857是一个神奇的数字,因为它的所有循环排列能由它乘以1,2,...,6 ...

  5. 【BZOJ 2818】 GCD

    [题目链接] 点击打开链接 [算法] 线性筛出不大于N的所有素数,枚举gcd(x,y)(设为p),问题转化为求(x,y)=p的个数          设x=x'p, y=y'p,那么有(x,y)=1且 ...

  6. 【HDU 5382】 GCD?LCM! (数论、积性函数)

    GCD?LCM! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  7. 【CF 585E】 E. Present for Vitalik the Philatelist

    E. Present for Vitalik the Philatelist time limit per test 5 seconds memory limit per test 256 megab ...

  8. 【CF 463F】Escape Through Leaf

    题意 给你一棵 \(n\) 个点的树,每个节点有两个权值 \(a_i,b_i\). 从一个点 \(u\) 可以跳到以其为根的子树内的任意一点 \(v\)(不能跳到 \(u\) 自己),代价是 \(a_ ...

  9. 【CF 453A】 A. Little Pony and Expected Maximum(期望、快速幂)

    A. Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megabytes ...

随机推荐

  1. Leetcode 912. Sort an Array

    class Solution: def sortArray(self, nums: List[int]) -> List[int]: return sorted(nums)

  2. Java程序员进阶路线-高级java程序员养成

    1. 引言 搞Java的弟兄们肯定都想要达到更高的境界,用更少的代码解决更多的问题,用更清晰的结构为可能的传承和维护做准备.想想当初自己摸着石头过河,也看过不少人介绍的学习路线,十多年走过来多少还是有 ...

  3. Gif图片验证码类

    新开发的安全验证码类,支持生成Gif图片验证码(带噪点,干扰线,网格,随机色背景,随机自定义字体,倾斜,Gif动画). 上图: 字体及字体文件的路径需要在类中$FontFilePath及$FontFi ...

  4. RPi 2B QEMU 模拟树莓派

    /******************************************************************************** * RPi 2B QEMU 模拟树莓 ...

  5. E: Could not get lock /var/lib/dpkg/lock解决

    ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决 通过终端安装或卸载程序sudo apt-get install/autoremove xxx时出 ...

  6. bzoj 3195 奇怪的道路

    Written with StackEdit. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有\(n\ ...

  7. LOJ2823 「BalticOI 2014 Day 1」三个朋友

    题意 给定一个字符串 S,先将字符串 S 复制一次(变成双倍快乐),得到字符串 T,然后在 T 中插入一个字符,得到字符串 U. 给出字符串 U,重新构造出字符串 S. 所有字符串只包含大写英文字母. ...

  8. Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

    python3.6.3  我在处理爬虫时候使用BeautifulSoup中遇到报错 “ bs4.FeatureNotFound: Couldn't find a tree builder with t ...

  9. Ehcache/Redis/Tair缓存性能对比[转载]

    FW : http://xulingbo.net/?p=434 版权归许令波所有.此处只是一个转载. 后面介绍的不同方式都有测试数据,这些测试数据都是在同一的测试环境下得出的测试结果: 测试机器的配置 ...

  10. Java-Runoob:Java 对象和类

    ylbtech-Java-Runoob:Java 对象和类 1.返回顶部 1. Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 ...