HDU 1788 Chinese remainder theorem again
来源:互联网 发布:淘宝店铺网红 编辑:程序博客网 时间:2024/05/31 18:45
Description
我知道部分同学最近在看中国剩余定理,就这个定理本身,还是比较简单的:
假设m1,m2,…,mk两两互素,则下面同余方程组:
x≡a1(mod m1)
x≡a2(mod m2)
…
x≡ak(mod mk)
在0<=<m1m2…mk内有唯一解。
记Mi=M/mi(1<=i<=k),因为(Mi,mi)=1,故有二个整数pi,qi满足Mipi+miqi=1,如果记ei=Mi/pi,那么会有:
ei≡0(mod mj),j!=i
ei≡1(mod mj),j=i
很显然,e1a1+e2a2+…+ekak就是方程组的一个解,这个解加减M的整数倍后就可以得到最小非负整数解。
这就是中国剩余定理及其求解过程。
现在有一个问题是这样的:
一个正整数N除以M1余(M1 - a),除以M2余(M2-a), 除以M3余(M3-a),总之, 除以MI余(MI-a),其中(a<Mi<100 i=1,2,…I),求满足条件的最小的数。
假设m1,m2,…,mk两两互素,则下面同余方程组:
x≡a1(mod m1)
x≡a2(mod m2)
…
x≡ak(mod mk)
在0<=<m1m2…mk内有唯一解。
记Mi=M/mi(1<=i<=k),因为(Mi,mi)=1,故有二个整数pi,qi满足Mipi+miqi=1,如果记ei=Mi/pi,那么会有:
ei≡0(mod mj),j!=i
ei≡1(mod mj),j=i
很显然,e1a1+e2a2+…+ekak就是方程组的一个解,这个解加减M的整数倍后就可以得到最小非负整数解。
这就是中国剩余定理及其求解过程。
现在有一个问题是这样的:
一个正整数N除以M1余(M1 - a),除以M2余(M2-a), 除以M3余(M3-a),总之, 除以MI余(MI-a),其中(a<Mi<100 i=1,2,…I),求满足条件的最小的数。
Input
输入数据包含多组测试实例,每个实例的第一行是两个整数I(1<I<10)和a,其中,I表示M的个数,a的含义如上所述,紧接着的一行是I个整数M1,M1...MI,I=0 并且a=0结束输入,不处理。
Output
对于每个测试实例,请在一行内输出满足条件的最小的数。每个实例的输出占一行。
Sample Input
2 12 30 0
Sample Output
5
#include<set>#include<map>#include<ctime>#include<cmath>#include<stack>#include<queue>#include<bitset>#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<algorithm>#include<functional>#define rep(i,j,k) for (int i = j; i <= k; i++)#define per(i,j,k) for (int i = j; i >= k; i--)#define loop(i,j,k) for (int i = j;i != -1; i = k[i])#define lson x << 1, l, mid#define rson x << 1 | 1, mid + 1, r#define fi first#define se second#define mp(i,j) make_pair(i,j)#define pii pair<int,int>using namespace std;typedef long long LL;const int low(int x) { return x&-x; }const double eps = 1e-4;const int INF = 0x7FFFFFFF;const int mod = 9973;const int N = 3e5 + 10;int n, a;LL ans, x;LL gcd(LL x, LL y){return x%y ? gcd(y, x%y) : y;}int main(){while (scanf("%d%d", &n, &a), n + a){ans = 1;while (n--){scanf("%lld", &x);ans = ans / gcd(x, ans) * x;}printf("%lld\n", ans - a);}return 0;}
0 0
- hdu 1788 Chinese remainder theorem again
- Hdu 1788 Chinese remainder theorem again
- HDU 1788 Chinese remainder theorem again 数论
- hdu 1788 Chinese remainder theorem again
- HDU 1788 Chinese remainder theorem again
- hdu 1788 Chinese remainder theorem again(最小公倍数)
- Chinese remainder theorem again(HDU 1788)
- hdu 1788 Chinese remainder theorem again 最小公倍数
- hdu 1788 Chinese remainder theorem again
- 【HDU】 1788 Chinese remainder theorem again
- HDU 1788 Chinese remainder theorem again
- hdu 1788 Chinese remainder theorem again 多个数的最小公倍数
- HDU 1788 Chinese remainder theorem again 中国剩余定理转换
- HDU 1788 Chinese remainder theorem again 中国剩余定理
- HDU 1788——Chinese remainder theorem again
- hdu 1788 Chinese remainder theorem again((数学:简单题)
- 【数论】 HDOJ 1788 Chinese remainder theorem again
- HDOJ-1788 Chinese remainder theorem again(数论)
- Android 学习方法总结
- 第三章-----操作系统基本概念
- QT4:水平布局管理器QHBoxLayout
- hdoj2065 "红色病毒"问题 (找规律)
- JSP相关
- HDU 1788 Chinese remainder theorem again
- python第六天学习记录——面向对象基础
- 电路与Multisim 利用示波器观察二极管的正向电压
- 从尾到头打印链表——剑指offer
- 第四章-----进程
- 互斥量、临界区、信号量——来来来,看你晕不晕
- Android插件化开发实现动态换肤
- lua module
- Android----菜单的使用