QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#688127 | #6440. Xingqiu's Joke | Kopicy | WA | 1ms | 3568kb | C++23 | 1.3kb | 2024-10-29 23:33:50 | 2024-10-29 23:33:51 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i, a, b) for(int i=(a);i<=(b);++i)
#define sz(x) (int)x.size()
#define endl "\n"
const int N = 2e5, mod = 1e9 + 7, inf = 1e18;
void solve() {
int nn,mm;
cin>>nn>>mm;
int d=abs(nn-mm);
vector<int> tmp;
for(int i=2;i<=sqrt(d);i++){
if(d%i==0){
tmp.push_back(i);
while(d%i==0) d/=i;
}
}
if(tmp.empty()) tmp.push_back(d);
map<array<int,2>,int> mp;
function<int(int,int)> dfs=[&](int n,int m){
if(n==1 || m==1) return 0LL;
if(abs(n-m)==1) return min(n,m)-1;
if(mp.count({n,m})) return mp[{n,m}];
int res=max(n,m)-1;
for(auto x:tmp){
if(abs(n-m)%x==0){
if(n%x){
int ad=n%x;
res=min(res,1+ad+dfs((n-ad)/x,(m-ad)/x));
res=min(res,1+x-ad+dfs((n+x-ad)/x,(m+x-ad)/x));
}
else{
res=min(res,1+dfs(n/x,m/x));
}
}
}
mp[{n,m}]=res;
return res;
};
cout<<dfs(nn,mm)<<'\n';
}
signed main() {
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int tt = 1;
cin >> tt;
rep(kase, 1, tt) solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3568kb
input:
5 4 7 9 8 32 84 11 35 2 1
output:
2 7 22 5 0
result:
wrong answer 3rd numbers differ - expected: '5', found: '22'