X问题
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10234 Accepted Submission(s): 3735

Problem Description
求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 < a[i] <= 10)。

Input
输入数据的第一行为一个正整数T,表示有T组测试数据。每组测试数据的第一行为两个正整数N,M (0 < N <= 1000,000,000 , 0 < M <= 10),表示X小于等于N,数组a和b中各有M个元素。接下来两行,每行各有M个正整数,分别为a和b中的元素。

Output
对应每一组输入,在独立一行中输出一个正整数,表示满足条件的X的个数。

Sample Input
3
10 3
1 2 3
0 1 2
100 7
3 4 5 6 7 8 9
1 2 3 4 5 6 7
10000 10
1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9

Sample Output
1
0
3

Author
lwg

Source
HDU 2007-1 Programming Contest

问题链接:HDU1573 X问题
问题简述:(略)
问题分析:扩展欧几里得算法问题,模板题,不解释。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* HDU1573 X问题 */#include <bits/stdc++.h>using namespace std;typedef long long LL;void exgcd(LL a, LL b, LL &d, LL &x, LL &y)
{if (b) {exgcd(b, a % b, d, x, y); LL t = x; x = y; y = t - a / b * y;}else {x = 1; y = 0; d = a;}
}const int M = 10;
int a[M], b[M];int main()
{int t;scanf("%d", &t);while (t--) {int n, m;scanf("%d%d", &n, &m);for (int i = 0; i < m; i++) scanf("%d", &a[i]);for (int i = 0; i < m; i++) scanf("%d", &b[i]);LL a0 = a[0], b0 = b[0], x, y, d;int flag = 1;for (int i = 1; i < m; i++) {exgcd(a0, a[i], d, x, y);if ((b[i] - b0) % d != 0) {flag = 0; break;}LL tmp = a[i] / d;x = x * (b[i] - b0) / d;x = (x % tmp + tmp) % tmp;b0 = b0 + a0 * x;a0 = a0 * tmp;}LL ans = 0;if (flag == 0 || n < b0);else {ans = (n - b0) / a0 + 1;if (b0 == 0) ans--;}printf("%lld\n", ans);}return 0;
}

HDU1573 X问题【扩展欧几里得算法】相关推荐

  1. 扩展欧几里得算法_扩展欧几里得递推算法

    欧几里得算法 表示 整数 a 与 b 的最大公约数. 若 t = a % b, 则 证明略. 递推版 gcd 算法 gcd 接受变量元组 (a, b) 作为输入,输出最大公约数 (r). 我们很难直接 ...

  2. 欧几里得算法扩展欧几里得算法

    欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b). ...

  3. 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...

    难度较高,阅读时间大概 28 分钟 这是数论的第二篇,在<素数筛法>中,我们重温了素数这个数学定义,并且给出了区别于教科书上更高效的 Eratosthenes 筛法和欧拉线性筛.这篇文会从 ...

  4. Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...

    Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...

  5. POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法)

    POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法) 手动博客搬家: 本文发表于20180226 23:35:26, 原地址https://blog.csdn ...

  6. GCD LCM 欧几里得算法 扩展欧几里得算法

    欧几里得算法: 辗转相除法的关键恒等式:gcd(a,b)=gcd(b,a mod b); 边界条件:gcd(a,0)=a; //最大公约数 int gcd(int a,int b) {return b ...

  7. 欧几里得算法和扩展欧几里得算法(Euclidean_Algorithm and Extended_Euclidean_Algorithm)

    一.基本概念 欧几里得算法:又名辗转相除法,计算两个整数a,b的最大公约数. 扩展欧几里得算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ...

  8. 2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】

    问题 C: 磨刀 时间限制: 1 Sec  内存限制: 128 MB 提交: 190  解决: 39 [提交] [状态] [讨论版] [命题人:admin] 题目描述 磨刀是一个讲究的工作,只能在n℃ ...

  9. 扩展欧几里得算法 POJ 1061

    根据此题 整理下 扩展欧几里得 扩展欧几里得是用来判断并求 ax + by = c 是否有解及其解的数学算法 首先列出定理 1.ax + by = gcd(a,b) 2.gcd(a,b) = gcd( ...

最新文章

  1. LabVIEW 三维机器人展示
  2. Spring基础专题——第六章(Aop编程)
  3. 【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 扩展文件名格式 | 扩展文件下载存放地址 )
  4. 利用反射球实现镜面效果
  5. 云炬Android开发笔记 13购物车,订单,支付功能开发(包含支付宝支付和微信支付)
  6. 【2】基于用户行为的推荐方法
  7. python3指定目录所有excel_如何用python遍历文件夹下的所有excel文件
  8. iPhone 6S三大性能实测
  9. C语言局部变量、全局变量、静态局部变量、静态全局变量
  10. html 倒计时字体消失,最简单的一个网页倒计时代码 时间到期后会显示出提醒内容 收藏版...
  11. 以太坊搭建联盟链_区块链知识普及:什么是以太坊
  12. UNIX网络编程——shutdown 与 close 函数 的区别
  13. 有用的网页链接的整合(不定时更新)
  14. 厉害了!这款百度炼丹神器绝了!
  15. Gulp介绍与入门实践
  16. jsp中对jstl一些标签的引用方式
  17. 陈希孺《概率论与数理统计》读书笔记
  18. 访问共享打印机报错:0x00000bcb
  19. IDEA打包war部署到Tomcat
  20. Aerospike SSD模式下写入swb内的记录格式

热门文章

  1. 转载《Python与开源GIS教程》随书源码网址
  2. 使用postman调试web API
  3. IOS开发人员必看的精品资料100
  4. Android集成Zxing
  5. MySQL添加唯一约束和联合唯一约束(建表后添加)
  6. 在计算机里分数线怎么表示什么意思,高考投档分数线是什么意思 怎么定的
  7. spark创建DF的两种方式
  8. 定义并调用函数 十进制转二进制_用‘栈的思想编写一个十进制转换二进制、八进制或十六进制的程序...
  9. NVIDIA硬编码方式:omxh264enc和nvv4l2h264enc
  10. mysql 导入oracle 11_导入oracle11g的数据库到自己本地电脑