51nod 1079 中国剩余定理
来源:互联网 发布:pl sql insert into 编辑:程序博客网 时间:2024/06/05 22:39
51nod 1079 中国剩余定理
逐级满足法:
具体:http://blog.csdn.net/qq_33199236/article/details/51494157
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <queue>#include <map>using namespace std;#define LL long long#define INF 0x3f3f3f3f#define PI acos(-1.0)#define E 2.71828//#define MOD 1000000007#define N 1010int exgcd(int a,int b,int &x,int &y){ if(b == 0) { x = 1; y = 0; return a; } int d = exgcd(b,a%b,x,y); int t = x; x = y; y = t - a/b*y; return d;}int ni[20],c[20];int main(){ int t; scanf("%d",&t); for(int i =0;i < t; i++) scanf("%d%d",&ni[i],&c[i]);//ni[]为ni;//c[]为ai; 这里因为x≡ai (%ni)就为 x + ni*y = ai;作为不定方程ax + by = c来看,ai就为ci。 int now_mod = ni[0]; //n1第一个方程 int now_c = c[0]; //a1第一个方程 for(int i = 1; i < t; i++) {//n1*x+n2*y==a2-a1,这里由于在用扩展欧几里德时,a,b会变化, 所以再引用了变量now_mod。下面只作方程一和二的讲解 int a = now_mod; //n1 int b = ni[i]; //n2 int c_real = c[i] - now_c; //a2-a1 int x,y; int d = exgcd(a,b,x,y); x = x * c_real/d; int r = b/d; x = (x%r+r)%r; //得到最小正的x。 now_c = now_mod * x + now_c; //变化的C now_mod = now_mod * (ni[i]/d); //变化的n//得到第一和第二合并的式子就是 c(这个其实无所谓,重点在下面俩的变化) ≡ now_c (mod now_mod) } int ans = now_c; printf("%d\n",ans);}
0 0
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod--1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod:1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod-1079中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51Nod-1079-中国剩余定理
- 51nod-1079 中国剩余定理
- 51Nod-1079-【数学】中国剩余定理
- 51nod 1079 中国剩余定理
- 51Nod 1079:中国剩余定理
- 【51 nod 1079 中国剩余定理】
- 51Nod-1079 中国剩余定理
- PL/SQL for loop
- Sentry Robots, ACM/ICPC SWERC 2012, UVa12549 【二分图】
- hdu 5441 离线处理+并查集
- 顺序表应用7:最大子段和之分治递归法
- Mybatis插件原理分析(三)分页插件
- 51nod 1079 中国剩余定理
- 欢迎使用CSDN-markdown编辑器
- 进程状态
- maven导出项目依赖的jar包
- 时钟六:在LCD1602上显示时钟
- contentSize、contentInset和contentOffset
- 北理工本科生管理系统成绩查询爬虫
- 【机器学习】关联规则与Apriori算法
- BASEMAP使用筆記