POJ 2891 Strange Way to Express Integers(一元线性同余方程组)
来源:互联网 发布:教师培训网络课程平台 编辑:程序博客网 时间:2024/05/01 10:01
Description
Choose k different positive integers a1, a2, …, ak. For some non-negative m, divide it by every ai (1 ≤ i ≤ k) to find the remainder ri. If a1, a2, …, ak are properly chosen, m can be determined, then the pairs (ai, ri) can be used to express m.
“It is easy to calculate the pairs from m, ” said Elina. “But how can I find m from the pairs?”
Since Elina is new to programming, this problem is too difficult for her. Can you help her?
Input
The input contains multiple test cases. Each test cases consists of some lines.
- Line 1: Contains the integer k.
- Lines 2 ~ k + 1: Each contains a pair of integers ai, ri (1 ≤ i ≤ k).
Output
Output the non-negative integer m on a separate line for each test case. If there are multiple possible values, output the smallest one. If there are no possible values, output -1.
Sample Input
28 711 9
Sample Output
31
Hint
All integers in the input and the output are non-negative and can be represented by 64-bit integral types.
Source
总结:
不断的合并两个同余方程组,知道接出结果
//// main.cpp// Strange Way to Express Integers//// Created by 张嘉韬 on 16/8/24.// Copyright © 2016年 张嘉韬. All rights reserved.//#include <iostream>#include <cstring>#include <cstdio>using namespace std;typedef long long ll;void exgcd(ll a,ll b,ll &d,ll&x,ll&y){ if(!b) {d=a,x=1,y=0;} else exgcd(b,a%b,d,y,x),y-=x*(a/b);}int main(int argc, const char * argv[]) { //freopen("/Users/zhangjiatao/Documents/暑期训练/input.txt","r",stdin); ll k; while(scanf("%lld",&k)!=EOF) { ll r1,a1; int flag=1; scanf("%lld%lld",&a1,&r1); for(int i=1;i<=k-1;i++) { ll r2,a2; scanf("%lld%lld",&a2,&r2); if(flag) { ll a,b,c,d,x0,y0; a=a1,b=a2,c=r2-r1; exgcd(a,b,d,x0,y0); if(c%d!=0) flag=0; ll t=b/d; x0=(x0*(c/d)%t+t)%t; r1+=a1*x0; a1*=a2/d; } } if(!flag) { printf("-1\n"); } else printf("%lld\n",r1); } return 0;}
- POJ 2891 Strange Way to Express Integers(解一元线性同余方程组)
- POJ 2891 Strange Way to Express Integers 解一元线性同余方程组
- POJ 2891 Strange Way to Express Integers(一元线性同余方程组模版题)
- POJ 2891 Strange Way to Express Integers(exgcd—解一元线性同余方程组)
- POJ 2891 Strange Way to Express Integers(一元线性同余方程组)
- poj 2891 Strange Way to Express Integers 一元线性同余方程组
- poj 2891 Strange Way to Express Integers(一元线性同余方程组)
- poj 2891 Strange Way to Express Integers(解线性同余方程组) + hdu 1573
- poj 2891 Strange Way To Express Integers(线性同余方程组)
- poj 2891 Strange Way to Express Integers(线性同余方程组求解)
- POJ 2891 Strange Way to Express Integers解线性同余方程组(中国剩余定理不互质版)
- POJ2891——Strange Way to Express Integers(一元线性同余方程组)
- POJ2891 Strange Way to Express Integers【一元线性同余方程组】
- POJ2891 Strange Way to Express Integers 一元线性同余方程组
- 【POJ2891】Strange Way to Express Integers-解一元线性同余方程组
- poj2891 Strange Way to Express Integers【解一元线性同余方程组模板】
- Strange Way to Express Integers(poj2891线性同余方程组)
- POJ2891 Strange Way to Express Integers 线性同余方程组
- $.extend() 参数
- Maven的settings.xml文件结构之profiles
- 8.5 子模块分析之VDIC
- jsp的config对象浅析。
- 直播干货来袭,RTMPCHybridEngine颠覆传统直播
- POJ 2891 Strange Way to Express Integers(一元线性同余方程组)
- NPOI 设置Excel样式
- Storm 集群监控报警-问题排查记录
- React Native Don't Call PropTypes Warning
- 使用 Spring Boot 快速构建 Spring 框架应用
- 函数重载
- 创建Content Provider
- 通过代码学习关键字const
- jquery实现瀑布流布局