Submission #1125199

#TimeUsernameProblemLanguageResultExecution timeMemory
1125199AlgorithmWarriorMagic Show (APIO24_show)C++17
5 / 100
150 ms484 KiB
#include <bits/stdc++.h>
#include "Alice.h"

using namespace std;

vector<pair<int,int>>Alice(){
    long long x=setN(5000);
    int i;
    vector<pair<int,int>>tree;
    for(i=2;i<=5000;++i){
        tree.push_back({x%(i-1)+1,i});
    }
    return tree;
}
#include <bits/stdc++.h>
#include "Bob.h"

using namespace std;

__int128 gcd(__int128 a,__int128 b){
    long long aa=a;
    long long bb=b;
    return __gcd(aa,bb);
}

__int128 bin_exp(__int128 base,__int128 exp,__int128 mod){
    __int128 rez=1;
    while(exp){
        if(exp&1){
            rez=rez*base%mod;
        }
        base=base*base%mod;
        exp/=2;
    }
    return rez;
}

__int128 CRT(__int128 r1,__int128 m1,__int128 r2,__int128 m2){
    __int128 g=gcd(m1,m2);
    __int128 x,k;
    __int128 dif=(r2-r1)/g;
    while(dif<0){
        dif+=m2/g*1e9;
    }
    k=dif*bin_exp(m1/g,m2/g-2,m2/g)%(m2/g);
    x=m1*k+r1;
    return x;
}

long long Bob(vector<pair<int,int>>V){
    __int128 x=0;
    __int128 mod=1;
    for(auto edge : V){
        x=CRT(x,mod,edge.first-1,edge.second-1);
        if(mod>1e18/(1LL*edge.second-1)*gcd(mod,1LL*edge.second-1))
            break;
        mod=mod/gcd(mod,1LL*edge.second-1)*(edge.second-1);
    }
    return x;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...