4.26 每日一题题解

最大公约数和最小公倍数问题

涉及知识点:

  • 数学

solution:

  • \(所有的(a,b),都必须满足:\)
  • \(①gcd(a,b)=x\)
  • \(②lcm(a,b) = a*b/gcd(a,b) = y\)
  • \(①②化简得到a*b = x*y\)
  • \(做法就是枚举a,则b就等于\frac{x*y}{a}\)
  • \(接下来就判断a,b是否符合条件即可\)

std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
    ll x, y;
    while(~scanf("%lld%lld",&x,&y)){
        int ans = 0;
        for(ll i = 1;i<=max(x,y);i++){
            if(x*y%i == 0 &&__gcd(i , x*y/i) == x)
                ans++;
        }      
        printf("%d\n",ans);
    }
    return 0;
}
posted @ 2020-04-26 09:45  QFNU-ACM  阅读(94)  评论(0编辑  收藏  举报