http://codeforces.com/problemset/problem/338/D

中国剩余定理的应用,思路是确定可能符合的最小行和最小列,然后判断是否符合。若不符合则后面的(最小的倍数)也不会符合。

寻找最小行和最小列就用了非互质中国剩余定理模版。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define LL long long
using namespace std; LL n,m,k,a[] = {},b[]; LL gcd(LL a,LL b)
{
return b?gcd(b,a%b):a;
} LL e_gcd(LL a,LL b,LL &x,LL &y)
{
if(!b)
{
x = ;
y = ;
return a;
}
LL ans = e_gcd(b,a%b,x,y),temp = x;
x = y;
y = temp-a/b*y;
return ans;
} LL CRT(LL *a,LL *m) //方程x%m=a;
{
LL lcm=,X=m[],Y=a[];
for(int i=;i<=k;i++) lcm=lcm/gcd(lcm,m[i])*m[i];
for(int i=;i<=k;i++)
{
LL A=X,B=m[i],d,x,y,c=a[i]-Y;
d=e_gcd(A,B,x,y);
if(c%d)return -;
LL mod=m[i]/d;
LL K=((x*c/d)%mod+mod)%mod;
Y=X*K+Y;
X=X*m[i]/d;
}
if(Y==) return lcm;
return Y;
} int main()
{
scanf("%I64d%I64d%I64d",&n,&m,&k);
for(int i = ;i <= k;i++) scanf("%I64d",&b[i]);
LL x = CRT(a,b);
if(x > n || x < )
{
printf("NO\n");
return ;
}
for(int i = ;i <= k;i++) a[i] = -i;
LL y = CRT(a,b);
if(y+k- > m || y < )
{
printf("NO\n");
return ;
}
for(int i = ;i <= k;i++)
{
if(gcd(x,y+i-) != b[i])
{
printf("NO\n");
return ;
}
}
printf("YES\n");
return ;
}

Codeforces_338_D的更多相关文章

随机推荐

  1. Spring事务失效的 8 大原因,这次可以吊打面试官了!

    今天再来一篇<吊打面试官>系列,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复:吊打,我会陆续更新--) 前几天栈长不是发了一篇文章,里面有一个关于事务失效的问题: 用 Spring ...

  2. day5 函数和参数

    函数就是最基本的一种代码抽象的方式 定义一个函数使用def语句 def my_abs(x): if x >= 0: return x else: return -x 定义一个什么事也不做的空函数 ...

  3. 物理ceph集群+K8s

    前提条件 在Ceph为k8s创建一个pool ceph osd pool create k8s 128 创建admin用户 ceph auth get-or-create client.admin m ...

  4. Spring Security 实战干货: 简单的认识 OAuth2.0 协议

    1.前言 欢迎阅读 Spring Security 实战干货 系列文章 .OAuth2.0 是近几年比较流行的授权机制,对于普通用户来说可能每天你都在用它,我们经常使用的第三方登录大都基于 OAuth ...

  5. 论Java中的抽象类与接口

    目录 抽象类和抽象方法 定义 与普通类的区别以及注意点: 抽象类的作用 接口 定义 示例 注意 作用 最后:接口与抽象类的异同 使用场景 借鉴 抽象类和抽象方法 定义 抽象方法和抽象类都必须被abst ...

  6. 用来更新服务的bat 脚本

    net stop XK.Service echo "已停止服务,开始更新!" set /a t = echo %t% :loop 127.1 >nul set /a t = ...

  7. Spring Boot2 系列教程 (十六) | 整合 WebSocket 实现广播

    前言 如题,今天介绍的是 SpringBoot 整合 WebSocket 实现广播消息. 什么是 WebSocket ? WebSocket 为浏览器和服务器提供了双工异步通信的功能,即浏览器可以向服 ...

  8. 轻松弄懂var、let、const之间的区别

    ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,于2015年6月正式发布,也称ECMAScript 2015. ES6的好处 ES6的出现为我们前端带来了很多方便之处,以 ...

  9. request session

    例子 url = 'http://beanhome.com/user/login' header = { "Content-Type": 'application/json', & ...

  10. django 数据库中的表生成model

    https://blog.csdn.net/weixin_34405354/article/details/93582647 还没有证实是否有效