码迷,mamicode.com
首页 > 其他好文 > 详细

luogu P1072 Hankson的趣味题

时间:2018-02-10 00:01:30      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:++   clu   约数   判断   main   print   new   post   std   

题目链接

luogu P1072 Hankson 的趣味题

题解

啊,还是noip的题好做
额,直接推式子就好了
\(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_0}{a_1})\)
额....上面这个式子似乎没用,看b的
\(lcm(x,b_0)=\frac{x*b_0}{gcd(x,b_0)}=b1\)
那么\(gcd(x,b_0)=\frac{x*b_0}{b_1}\)
\(gcd(\frac{b_1}{b_0},\frac{b_1}{x})=1\)
显然\(x,b_0\)\(b_1\)约数且\(\frac{b_1}{b_0},\frac{b_1}{x}\)互质
枚举\(b_1\)的约数判断是否满足条件

代码

// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
using std::__gcd;
int main() {
    int a;
    scanf("%d",&a);
    for(int a0,a1,b0,b1,ans;a--;) {
        ans=0;
        scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
        for(int x=1;x*x<=b1;x++) 
            if(!(b1%x)) {
                if(__gcd(x,a0)==a1&&__gcd(b1/x,b1/b0)==1) ans++;
                if(x*x==b1) continue; 
                int y=b1/x;
                if(__gcd(y,a0)==a1&&__gcd(b1/y,b1/b0)==1) ans++;
            }
        printf("%d\n",ans);
    }
    return 0;
}

luogu P1072 Hankson的趣味题

标签:++   clu   约数   判断   main   print   new   post   std   

原文地址:https://www.cnblogs.com/sssy/p/8436930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!