当前位置:网站首页>Chinese remainder theorem acwing 204 Strange way of expressing integers
Chinese remainder theorem acwing 204 Strange way of expressing integers
2022-07-05 06:24:00 【T_ Y_ F666】
Chinese remainder theorem AcWing 204. Strange way to express integers
Original link
AcWing 204. Strange way to express integers
Algorithm tags
Math knowledge Congruence equation Expand the Chinese Remainder Theorem
Ideas
The picture is extracted from the solution of the question
Code
#include<bits/stdc++.h>
#define int long long
#define abs fabs
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
const int N = 105;
int a[N][N], eps = 1e-8;
int n;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void put(int x) {
if(x<0) putchar('-'),x=-x;
if(x>=10) put(x/10);
putchar(x%10^48);
}
int exgcd(int a, int b, int &x, int &y){
if(!b){
x=1, y=0;
return a;
}else{
int d=exgcd(b, a%b, y, x);
y-=a/b*x;
return d;
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
n=read();
int x=0, m1=read(), a1=read();
rep(i, 0, n-1){
int m2=read(), a2=read();
int k1, k2;
int d=exgcd(m1, m2, k1, k2);
if((a2-a1)%d){
x=-1;
break;
}
k1*=(a2-a1)/d;
k1=(k1 % (m2/d) + m2/d) % (m2/d);
x=k1*m1+a1;
int m=abs(m1/d*m2);
a1=k1*m1+a1;
m1=m;
}
if(x!=-1){
x = (a1 % m1 + m1) % m1;
}
printf("%lld",x);
return 0;
}
Originality is not easy.
Reprint please indicate the source
If it helps you Don't forget to praise and support
边栏推荐
- What's wrong with this paragraph that doesn't work? (unresolved)
- Network security skills competition in Secondary Vocational Schools -- a tutorial article on middleware penetration testing in Guangxi regional competition
- __ builtin_ Popcount() counts the number of 1s, which are commonly used in bit operations
- Paper reading report
- [wustctf2020] plain_ WP
- Currently clicked button and current mouse coordinates in QT judgment interface
- 栈 AcWing 3302. 表达式求值
- Leetcode-1200: minimum absolute difference
- Leetcode-6108: decrypt messages
- 中国剩余定理 AcWing 204. 表达整数的奇怪方式
猜你喜欢
1.15 - input and output system
MySQL advanced part 2: SQL optimization
栈 AcWing 3302. 表达式求值
Navicat连接Oracle数据库报错ORA-28547或ORA-03135
Open source storage is so popular, why do we insist on self-development?
MySQL advanced part 2: MySQL architecture
Leetcode-6108: decrypt messages
Simple selection sort of selection sort
MySQL advanced part 1: stored procedures and functions
阿里新成员「瓴羊」正式亮相,由阿里副总裁朋新宇带队,集结多个核心部门技术团队
随机推荐
【LeetCode】Day94-重塑矩阵
4. 对象映射 - Mapping.Mapster
[moviepy] unable to find a solution for exe
C - XOR to all (binary topic)
RecyclerView的应用
Network security skills competition in Secondary Vocational Schools -- a tutorial article on middleware penetration testing in Guangxi regional competition
C Primer Plus Chapter 15 (bit operation)
[BMZCTF-pwn] ectf-2014 seddit
In depth analysis of for (VaR I = 0; I < 5; i++) {settimeout (() => console.log (I), 1000)}
博弈论 AcWing 891. Nim游戏
2021apmcm post game Summary - edge detection
Simple selection sort of selection sort
How to set the drop-down arrow in the spinner- How to set dropdown arrow in spinner?
Gauss Cancellation acwing 884. Solution d'un système d'équations Xor linéaires par élimination gaussienne
背包问题 AcWing 9. 分组背包问题
Applicable to Net free barcode API [off] - free barcode API for NET [closed]
Doing SQL performance optimization is really eye-catching
如何正确在CSDN问答进行提问
Sword finger offer II 058: schedule
TypeScript 基础讲解