CRT模板题

/** @Date    : 2017-09-15 13:52:21
* @FileName: HDU 1573 CRT EXGCD.cpp
* @Platform: Windows
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version : $Id$
*/
#include <bits/stdc++.h>
#define LL long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8; LL mod;
LL a[11];
LL b[11];
LL exgcd(LL a, LL b, LL &x, LL &y)
{
LL d = a;
if(b == 0)
x = 1, y = 0;
else
{
d = exgcd(b, a % b, y, x);
y -= (a / b) * x;
}
return d;
}
LL md(LL x,LL y)
{
LL res = x % y;
if(res <= 0)
res = res + y;
return res;
}
int main()
{
int T;
cin >> T;
while(T--)
{
LL n, m;
scanf("%lld%lld", &n, &m);
for(int i = 0; i < m; i++) scanf("%d", a + i);
for(int j = 0; j < m; j++) scanf("%d", b + j);
LL rem, mod;
LL x, y;
LL ans = 0;
int flag = 0;
rem = b[0], mod = a[0];
for(int i = 1; i < m ; i++)
{
LL c = b[i] - rem;
LL g = __gcd(a[i], mod);
if(c % g!= 0)
flag = 1;
else
{
exgcd(mod, a[i], x, y);
LL tmp = a[i] / g;
//x = (c / g * x % tmp + tmp) % tmp;// m1x1+m2x2 = c
x = md(c / g * x, tmp);//x =
rem = md(rem + mod * x, mod / g * a[i]);
//rem = mod * x + rem;//ri + mixi
mod = mod / __gcd(mod, a[i]) * a[i];//LCM(m1, m2);
//y mod lcm(m1,m2) = x
}
}
//cout << rem <<"~" << mod << endl;
if(flag || n < rem)
printf("0\n");
else printf("%lld\n", (n - rem) / mod + 1);
}
return 0;
}//shi·ne

最新文章

  1. Oracle 中的伪列
  2. 转:java怎么用一行代码初始化ArrayList
  3. POJ 1723
  4. 在Ubuntu6.06 在搭建SVN服务器及在windows建立svn+ssh客户端 (续)
  5. SVN更改用户名和密码
  6. struts2-ognl 访问静态方法
  7. idea maven web工程明明添加了maven lib的依赖,但启动web容器时始终报No Class Found?
  8. js函数收藏:获取cookie值
  9. 远程登录阿里云上的MySQL
  10. unity资源
  11. 201521123096《Java程序设计》第四周学习总结
  12. 自学Aruba2.3-Aruba Web UI --Configuration面板介绍
  13. Shiro笔记(四)Shiro的realm认证
  14. linux命令:压缩解压打包工具大集合
  15. Mysql优化知识点总结(转自CS-Notes)
  16. zoj Beautiful Number(打表)
  17. 数据库SQL语句性能优化
  18. 【WP8】MultiBinding
  19. NOIP2015 D2T3 运输计划
  20. linux内核 asmlinkage宏

热门文章

  1. Java Web文件上传原理分析(不借助开源fileupload上传jar包)
  2. 半期考html5小游戏制作
  3. 【beta】Scrum站立会议第4次....11.6
  4. MAVEN项目标准目录结构 ;
  5. Win2019 + Oracle18c SQLPLUS 命令行出现乱码的解决
  6. ajax跨域问题(三种解决方案)
  7. js function的方法名是一个变量 能被重复定义 当变量名一致时候 会使用最后一个function
  8. el表达式作用域查找顺序 注意:当属性名字相同时候 先找到是小的作用域 因为是从小到大开始找的
  9. bzoj1211-树的计数
  10. bzoj1061-[Noi2008]志愿者招募-单纯形 &amp; 费用流