【Vijos】【1164】曹冲养猪
2024-10-14 23:23:58
中国剩余定理
没啥重要的……模板题,中国剩余定理就是解出模线性方程组的一个可行解(好像也是唯一解?)
这是一种神奇的构造方法……明白了为什么这样构造是对的就行了=。=至于怎么想到这种构造方法的……去问孙子去→_→
//Vijos 1164
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std; int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>'') {if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<='') {v=v*+ch-''; ch=getchar();}
return v*=sign;
}
typedef long long LL;
/*******************tamplate********************/ void exgcd(LL a,LL b,LL &d,LL &x,LL &y){
if(!b){ d=a; x=; y=; }
else { exgcd(b,a%b,d,y,x); y-=x*(a/b); }
}
LL china(int n,int *a,int *m){
LL M=,d,y,x=;
F(i,,n) M*=m[i];
F(i,,n){
LL w=M/m[i];
exgcd(m[i],w,d,d,y);
x=(x+y*w*a[i])%M;
}
return (x+M)%M;
}
int a[],b[];
int main(){
int n=getint();
F(i,,n) a[i]=getint(),b[i]=getint();
printf("%lld\n",china(n,b,a));
return ;
}
最新文章
- java ssh 框架下 利用junit4 spring-test进行单元测试
- CSS3如何去除 inline block 元素之间多出的空格
- 父目录的权限对子目录有没有影响?[Linux]
- ini_set 设置php配置项 在windows和linux下的不同
- springMVC与struts2的区别
- 你真的了解 console 吗
- 流媒体开发之-腾讯体育NBA视频点播解析
- VS中C++对象的内存布局
- JDK1.8源码分析之HashMap(一) (转)
- linux软与硬接线连接
- jenkins 中集成JNI的坑
- SNPs &; MAF
- HTML学习笔记汇总
- 【转载】Linux cgroup资源隔离各个击破之 - io隔离
- tedu训练营day01
- APP如何进行通信的
- 【转】Python之函数进阶
- bzoj 4811: [Ynoi2017]由乃的OJ
- Linux下jdk&;tomcat的安装
- WPF System.InvalidCastException: 无法将类型为“System.Windows.Media.Color”的对象强制转换为类型“System.Windows.Media.Brush”。