P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题

wsy_I @ 2024-06-26 18:40:33

这道题不用辗转相除法能AC吗?(我用辗转相除法A的)
也就是,我的代码不用dfs能AC吗?

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b,x,y,cnt;
double c;
ll dfs(ll a,ll b)
{
    if(b>a) swap(a,b);
    if(a%b==0) return b;
    else return dfs(b,a%b);
}
int main()
{
    scanf("%lld%lld",&x,&y);
    if(x>y){
        cout<<0;
        return 0;
    }
    for(int i=x;i<=x*y;i+=x){
        a=i;
        c=x*y*1.0/a;
        b=x*y/a;
        if(c!=b) continue;
        if(dfs(a,b)==x) cnt++;
    }
    cout<<cnt;
    return 0;
}

by return_second @ 2024-06-26 19:08:48

用STL的__gcd!


by wsy_I @ 2024-06-26 20:24:47

没学过。。。


|