QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#804031 | #9868. GCD | ucup-team5697# | WA | 43ms | 198780kb | C++20 | 1.7kb | 2024-12-07 19:56:45 | 2024-12-07 19:56:48 |
Judging History
answer
#pragma GCC optimize(2)
#pragma GCC optimize("Ofast")
#include<map>
#include<set>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<string>
#include<bitset>
#include<numeric>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=5e3+10;
const int N=5e3;
const int INF=0x3f3f3f3f;
const long long LINF=0x3f3f3f3f3f3f3f3f;
int n;
long long m,ans;
int g[MAXN][MAXN],lst[MAXN][MAXN];
#define swap(x,y) x^=y^=x^=y
inline int gcd(int a,long long b){
if(a>b){
swap(a,b);
}
if(!a){
return b;
}
if(b%a==0){
return a;
}
b%=a;
if(a>b){
swap(a,b);
}
return g[a][b];
}
inline void init(){
for(int i=1;i<=N;i++)
{
g[i][i]=i;
for(int j=i+1;j<=N;j++)
{
int k=j-i;
g[i][j]=i<=k?g[i][k]:g[k][i];
}
}
for(int i=1;i<=N;i++)
{
lst[i][0]=0;
for(int j=1;j<i;j++)
{
if(g[j][i]>1){
lst[i][j]=j;
}
else{
lst[i][j]=lst[i][j-1];
}
}
}
}
void dfs(int a,long long b,long long now){
if(!a){
ans=min(ans,now+1);
return ;
}
if(b%a==0){
ans=min(ans,now+2);
return ;
}
if(b/a+now>ans){
return ;
}
int cur=__gcd(0ll+a,b);
int c=a/cur,d=b/cur%c;
dfs(a,b-cur,now+1);
dfs(a-cur,b,now+1);
}
inline void solve(){
scanf("%d%lld",&n,&m);
if(n>m){
swap(n,m);
}
ans=LINF;
dfs(n,m,0);
printf("%lld\n",ans);
}
signed main(){
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
atexit([](){fprintf(stderr,"%.3lfs\n",(double)clock()/CLOCKS_PER_SEC);});
#endif
init();
int t;
scanf("%d",&t);
while(t--)
{
solve();
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 28ms
memory: 198780kb
input:
3 3 4 12 20 114 514
output:
3 4 6
result:
ok 3 lines
Test #2:
score: -100
Wrong Answer
time: 43ms
memory: 198724kb
input:
990 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 2 3 2 4 2...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 4 2 3 3 2 3 4 2 3 3 2 3 4 2 3 3 2 3 4 2 3 3 2 3 4 2 3 3 2 3 4 2 ...
result:
wrong answer 259th lines differ - expected: '4', found: '5'