中国剩余定理
2015-11-09 19:59
176 查看
#include <iostream> using namespace std; #define maxn 1000 int n,x[maxn][2],m[maxn],y[maxn];//x[i][0]=xmodx[i][1]; int moniyuan(int a,int b) { if(a<b){ int temp=b; b=a; a=temp; } int xx1=a,xx3=1,xx4=0; int x1=b,x2=a/b,x3=0,x4=1; while(x1!=1) {//cout<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<endl; int tx3=x3; int tx4=x4; int tx1=x1; x3=xx3-x2*x3; x4=xx4-x2*x4; x1=xx1%x1; xx1=tx1; x2=xx1/x1; xx3=tx3; xx4=tx4; } int re=x4; // int re=xx4-x2*x4; return re>0?re:re+a; } int main() { int n; while(cin>>n) { int sum=0; long long p=1; for(int i=0;i<n;i++) { cin>>x[i][0]>>x[i][1]; p=p*x[i][1]; } for(int i=0;i<n;i++) {m[i]=p/x[i][1]; y[i]=moniyuan(x[i][1],m[i]%x[i][1]); cout<<y[i]<<" "; sum+=x[i][0]*m[i]*y[i]; } cout<<endl; cout<<sum%p<<endl; } return 0; }
相关文章推荐
- muduo库阅读(9)——线程池
- VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage编译错误解决办法
- javascript 中关于call方法的详解。
- Codeforces Round #330 (Div. 2) B. Pasha and Phone
- php获取客户端IP
- MapReduce配置
- block中出现此种报错: Incompatible block pointer types initializing 'float (^__strong)(float, float)' with an expression of type 'int (^)(float, float)'
- 第120讲:Hadoop的MapReduce和Yarn的配置实战详解学习笔记
- Beaglebone Black(8)运用Python来进行控制IO,ADC,PWM
- 【创龙TMS320C6748开发板试用】+ 中断学习
- 屏蔽拨号弹出用户和密码的提示框
- 王家林老师的免费大数据视频,欢迎大家下载学习。
- 对Adaboost和SVM的一点直观认识
- Trinea性能优化之性能优化实例
- 处理elasticsearch中的NODENOTAVAILABLEEXCEPTIONS异常
- 不一样的hello world
- View 的 duplicateParentState 属性
- 【转】汪峰站在浪潮上 | 长报道
- unity 2D Sprite网格Slice工具
- 设计模式01-单例设计模式