arc159b

题目链接:https://atcoder.jp/contests/arc159/submissions/40436772

苦思冥想搞好几个小时终于给我过了哈哈哈哈。(虽然比赛的时候没调出来。。)

思路:
A,Bgcd>11d=AB,dx使gcd(Ax,Bx)>1gcd(A,B)=1AB=1

代码:

#include<bits/stdc++.h>
using namespace std;
long long gcd(long long x,long long y){
    if (!y) return x;
    return gcd(y,x%y); 
}
long long dfs(long long x,long long y){
    if (abs(x-y)==1) return min(x,y); 
    if (!x||!y) return 0;
    if (x==y) return 1;
    if (gcd(x,y)>1) return dfs(x/gcd(x,y)-1,y/gcd(x,y)-1)+1;
    long long d = abs(x-y);
    long long val = min(d,min(x,y));
    for (int i=1;i<=d/i;i++){
        if (d%i==0){
            if (x%i==y%i&&gcd((x-x%i),(y-y%i))==i&&i>1){
                val = min(val,x%i);
            }
            long long j = d/i;
            if (x%j==y%j&&gcd((x-x%j),(y-y%j))==j&&j>1){
                val = min(val,x%j);
            }
        }
    }
    return dfs(x-val,y-val)+val;
}
int main(){
    long long x,y;
    cin>>x>>y;
    cout<<dfs(x,y);
}
posted @   安潇末痕  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示