Advertisement
BaoJIaoPisu

Untitled

Sep 7th, 2021
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long diophantine(long long a1,long long b1,long long a2,long long b2)
  4. {
  5.     long long a,b,c,d,m,n,xm,ym,xn,yn,q,r,xr,yr,p,tam;
  6.     c=b2-b1;
  7.     a=a1;
  8.     b=a2;
  9.     d=__gcd(a,b);
  10.     m=a;
  11.     n=b;
  12.     xm=1; ym=0;
  13.     xn=0; yn=1;
  14.     while(n!=0) {
  15.         q=m/n;
  16.         r=m%n;
  17.         xr=xm-q*xn;
  18.         yr=ym-q*yn;
  19.         m=n; xm=xn; ym=yn;
  20.         n=r; xn=xr; yn=yr;
  21.     }
  22.     xm*=c/d;
  23.     ym*=c/d;
  24.     p=b/d;
  25.     q=a/d;
  26.     if(xm<0) {
  27.        tam=(abs(xm)/p)+1;
  28.        xm+=p*tam;
  29.        ym-=q*tam;
  30.     }
  31.     return xm;
  32. }
  33. deque<long long> s;
  34. int main() {
  35.     long long i,t,t1,t2,tam,a1,b1,a2,b2,tam2;
  36.     cin >> t;
  37.     for(i=1;i<=t;i++) {
  38.         cin >> t1 >> t2;
  39.         if(t1<0) {
  40.             tam=t2-abs(t1)%t2;
  41.         }
  42.         else
  43.         tam=t1%t2;
  44.         s.push_back(tam);
  45.         s.push_back(t2);
  46.     }
  47.     if(t==1) {cout << 1; return 0;}
  48.     if(t==1) {
  49.         a1=s.back(); s.pop_back();
  50.         a2=s.back(); s.pop_back();
  51.         if(a1<0) {
  52.             cout << t2-abs(tam)%t2;
  53.         }
  54.     }
  55.     while(!s.empty()) {
  56.         a1=s.back(); s.pop_back();
  57.         b1=s.back(); s.pop_back();
  58.         a2=s.back(); s.pop_back();
  59.         b2=s.back(); s.pop_back();
  60.         tam=diophantine(a1,b1,a2,b2)%a2;
  61.         tam2=a1*a2;
  62.         tam=a1%tam2*tam%tam2+b1;
  63.         if(s.empty()) break;
  64.         s.push_back(tam%tam2);
  65.         s.push_back(tam2);
  66.         //cout << tam << tam2;
  67.     }
  68.     cout << tam%tam2;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement