中国剩余定理模板(JZOJ 3093. 【NOIP2012模拟11.7】合唱队形)
来源:互联网 发布:软件验收测试报告模板 编辑:程序博客网 时间:2024/05/18 09:09
Description
学校要进行合唱比赛了,于是班主任小刘准备给大家排个队形。
他首先尝试排成m1行,发现最后多出来a1个同学;接着他尝试排成m2行,发现最后多出来a2个同学,……,他们尝试了n种排队方案,但每次都不能让同学们正好排成mi行。于是小刘寻求同事小明的帮助,以便给同学们排好队型。但小刘来去太匆忙,忘记告诉小明他们班有多少人了。没办法,现在只能根据上述信息求个满足要求的最小的数字来作为人数了。
虽然小明年轻时是理科生,但是他不愿意去思考这个问题;于是他找到了善于编程的你,希望你能通过编程来解决。
Input
第一行为一个整数n,表示小刘尝试了n种排队方案。
接下来n行,每行有两个整数mi,ai,表示小刘在第i种排队方案中,尝试让同学排成mi行,最后多出来ai个同学。
Output
每个输出文件只有一个整数,表示最少学生数,如果找不到这样的整数,说明小刘口误了,输出-1。
Sample Input
3
3 1
5 1
7 2
Sample Output
16
Data Constraint
Hint
对于100%的测试数据,满足n<=10,0
Code
#include <cstdio>#include <iostream>#include <cmath>/#include <algorithm>#define mo 1000000007#define fo(i,a,b) for (int i=a;i<=b;i++)using namespace std;long long m[15],a[15];int n;long long Exgcd(long long a,long long b,long long &x,long long &y){ if (!b) { x=1;y=0; return a; } long long d=Exgcd(b,a%b,x,y); long long t=x; x=y; y=t-(a/b)*y; return d;}long long CRT(long long a[],long long m[],int n) { long long M=1; long long ans=0; fo(i,1,n) M*=m[i]; fo(i,1,n) { long long x=0, y=0; long long Mi=M/m[i]; Exgcd(Mi,m[i],x,y); ans=(ans+Mi%M*x%M*a[i]%M+M)%M; } if(ans<0) ans+=M; return ans; } int main(){ freopen("data.in","r",stdin); scanf("%d",&n); fo(i,1,n) { if (i==1) { scanf("%lld%lld",&m[1],&a[1]); continue; } scanf("%lld%lld",&m[i],&a[i]); long long x=0,y=0; long long c=a[i]-a[1],d=Exgcd(m[1],m[i],x,y); if (c%d) { printf("-1\n"); return 0; } x*=(c/d); x=((x%m[i])+m[i])%m[i]; a[1]=m[1]*x+a[1]; m[1]=m[1]/d*m[i]; a[1]=a[1]%m[1]; } printf("%lld",a[1]); }
1 0
- 中国剩余定理模板(JZOJ 3093. 【NOIP2012模拟11.7】合唱队形)
- 中国剩余定理(模板)
- 中国剩余定理(模板)
- 模板[中国剩余定理]
- 中国剩余定理 模板
- 中国剩余定理模板
- 中国剩余定理模板
- 【中国剩余定理模板】
- 中国剩余定理 模板
- 中国剩余定理模板
- 中国剩余定理模板
- 中国剩余定理(模板+代码)
- 中国剩余定理两个模板
- 【模板】【codevs3990】中国剩余定理
- 扩展中国剩余定理模板
- 中国剩余定理(孙子定理)模板
- 中国剩余定理(chinese remainder theorem)【模板】
- 中国剩余定理模板(1) 两两互质情况
- 【网络】TCP协议中的三次握手和四次挥手(图解)
- Android补间动画(4)之旋转动画
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- hibernate中继承映射配置详细解析(二)
- ActionBar小解析
- 中国剩余定理模板(JZOJ 3093. 【NOIP2012模拟11.7】合唱队形)
- linux内核启动流程
- 20160811_ZF_MUL8
- 解决《 Linux3.6.7在OK6410平台的移植》文章的错误问题
- Android开发基础之SQLite数据库 单元测试的使用
- JVM的内存区域划分
- ubuntu环境下Jenkins+git配置java maven项目集成环境
- HDU-5821 多校训练第8场-1001(巧妙模拟)
- C语言有符号数与无符号数之间的转换