2018年全国多校算法寒假训练营练习比赛(第三场)B
2018-02-04 21:41
1076 查看
2018年全国多校算法寒假训练营练习比赛(第三场)B
题目链接题目描述
uu遇到了一个小问题,可是他不想答。 你能替他解决这个问题吗? 问题:给你k对a和r是否存在一个正整数x使每队a和r都满足:x mod a=r, 求最小正解x或无解。
输入描述:
第一行是正整数k(k<=100000)接下来k行,每行有俩个正整数a,r(100000>a>r>=0)
输出描述:
在每个测试用例输出非负整数m,占一行。 如果有多个可能的值,输出最小的值。如果没有可能的值,则输出-1。
示例1
输入 2 8 7 11 9
输出
31
解题思路
中国剩余定理,模板
在线模板_中国剩余定理
AC代码
#include<iostream> #define maxn 100010 using namespace std; typedef long long ll; void gcd(ll a, ll b, ll &d, ll &x, ll &y) { if (!b) { d = a; x = 1; y = 0; } else { gcd(b, a%b, d, y, x); y -= x * (a / b); } } ll c(ll n, ll a[], ll b[]) { ll m1 = a[0]; ll r1 = b[0]; ll flag = 0; ll d; for (ll i = 1; i<n; i++) { ll m2 = a[i]; ll r2 = b[i]; if (flag) continue; ll x, y; gcd(m1, m2, d, x, y); ll c = r2 - r1; if (c%d) { flag = 1; continue; } ll t = m2 / d; x = (c / d * x%t + t) % t; r1 = m1 * x + r1; m1 = m1 * m2 / d; } if (flag) return -1; if (n == 1 && r1 == 0) return m1; return r1; } ll aa[550000], bb[550000]; int main() { ll k, i; cin >> k; for (i = 0; i<k; i++) cin >> aa[i] >> bb[i]; cout << c(k, aa, bb) << endl; }
相关文章推荐
- 2018年全国多校算法寒假训练营练习比赛(第三场)G大水题
- 2018年全国多校算法寒假训练营练习比赛(第三场)---A---题(斯特灵公式)
- 2018年全国多校算法寒假训练营练习比赛(第三场)- G - 大水题 (容斥)
- 2018年全国多校算法寒假训练营练习比赛(第三场)题解
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第三场) 题解
- 2018年全国多校算法寒假训练营练习比赛(第三场)_C
- A-不凡的夫夫——2018年全国多校算法寒假训练营练习比赛(第三场)
- 2018年全国多校算法寒假训练营练习比赛(第三场)E---进击吧!阶乘(Java代码,另附Java解决大数问题的模板)
- 斯特林公式-Stirling公式(取N阶乘近似值)-HDU1018-Big Number 牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第三场)A.不凡的夫夫
- [ 牛客网 ] 2018年全国多校算法寒假训练营练习比赛(第三场)— E 进击吧!阶乘
- 2018年全国多校算法寒假训练营练习比赛(第三场)E
- 2018年全国多校算法寒假训练营练习比赛(第三场)---E---题(大数阶乘(模板题)c++/java/py)
- [ 牛客网 ] 2018年全国多校算法寒假训练营练习比赛(第三场)— D 小牛vs小客
- 2018年全国多校算法寒假训练营练习比赛(第三场)
- 2018年全国多校算法寒假训练营练习比赛(第三场)F
- D-小牛vs小客——2018年全国多校算法寒假训练营练习比赛(第三场)
- 2018年全国多校算法寒假训练营练习比赛(第三场)题解 A-不凡的夫夫(斯特林定理的应用)
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第三场) F 小牛再战(博弈)
- 2018年全国多校算法寒假训练营练习比赛(第三场)G
- 2018年全国多校算法寒假训练营练习比赛(第三场) A