#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 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;
if(r2>=r1){
k=(r2-r1)/g%(m2/g)*bin_exp(m1/g,m2/g-2,m2/g)%(m2/g);
x=m1*k+r1;
}
else{
k=(r1-r2)/g%(m1/g)*bin_exp(m2/g,m1/g-2,m1/g)%(m1/g);
x=m2*k+r2;
}
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((long long)mod,1LL*edge.second-1))
break;
mod=mod/__gcd((long long)mod,1LL*edge.second-1)*(edge.second-1);
}
return x;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |