HDU1788中国剩余定理—这种奇怪的题目怎么上的杭电
2017-01-15 20:25
232 查看
这是题目
啊哈,大概就是给定a,i,求最小正整数N,使对于所有的Mi,有 N≡ (Mi-a) mod Mi。
这道题叫中国剩余定理... ...然后我就很傻崩的用中国剩余定理了... ...然后不定方程不会解... ...暴力枚跑不过去... ... 然后又重新看了看题,发现自己的大脑被强暴了... ...
这道题目贼恶心人。敲了老半天的中国剩的我感慨又一次把脑细胞花在了羊羽上,荒废了人生。
你以为这题很难吗小伙子,那还是你TOO YOUNG TOO NAIVE了。
既然N mod Mi = (Mi-a)
那么 那么 那么
(N+a) % Mi 不就 等于 0 吗
那么 这道题 不就是一道 最小公倍数的 水题了吗 啊
这代码还有上传的必要了吗
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <vector> #include <cstring> #define LL long long int #define ls (x << 1) #define rs (x << 1 | 1) #define fa (x >> 1) #define MID int mid=(l+r)>>1 #define max(a,b) (a>b?a:b) #define min(a,b) (a<b?a:b) using namespace std; LL n,a,M[101],finalS; LL gi() { LL x=0,res=1;char ch=getchar(); while(ch!='-' && (ch>'9' || ch<'0'))ch=getchar(); if(ch=='-')res=-1,ch=getchar(); while(ch<='9'&&ch>='0')x=(x<<3)+(x<<1)+ch-48,ch=getchar(); return x*res; } LL gcd(LL a,LL b){return b==0?a:gcd(b,a%b);} int main() { while(1) { n=gi();a=gi();finalS=1; if(n==0 && a==0)return 0; for(int i=1;i<=n;++i)M[i]=gi(); for(int i=1;i<=n;++i) { LL G=gcd(finalS,M[i]); finalS=finalS/G*M[i]; } cout<<finalS-a<<endl; } }哦呵呵呵
相关文章推荐
- 杭电2096 今天刚刚学习的中国剩余定理,这个好用
- Chinese remainder theorem again(hdu1788中国剩余定理)
- HDOJ 题目3579 Hello Kiki(中国剩余定理,拓展的欧几里得)
- HDOJ 题目1573 X问题(中国剩余定理,拓展欧几里得)
- CJOJ 1995 中国剩余定理(HDU1788)
- hdu1788 中国剩余定理的分析
- 【数论】【中国剩余定理】【LCM】hdu1788 Chinese remainder theorem again
- [省选前题目整理][SGU 261]Discrete Roots(扩展欧几里得+中国剩余定理+原根+大步小步算法)
- 数论基础题目八题【欧几里得】【筛法素数】【中国剩余定理】
- HDU1788 Chinese remainder theorem again【中国剩余定理】
- HDU 1370 Biorhythms 中国剩余定理
- 中国剩余定理
- 中国剩余定理具体解释
- POJ1006 UVA756 UVALive5421 Biorhythms【中国剩余定理】
- POJ 1006 Biorhythms [中国剩余定理] 超短代码
- 中国剩余定理的简单应用之生理周期
- 中国剩余定理
- 中国剩余定理
- HDOJ 题目2035人见人爱A^B(剩余定理 水题)
- POJ 1006 中国剩余定理