luogu P1072 Hankson的趣味题

Posted Nico&11101001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu P1072 Hankson的趣味题相关的知识,希望对你有一定的参考价值。

题目链接

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的趣味题的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P1072 NOIP2009 Hankson的趣味题暴力

luogu P1072 Hankson 的趣味题

P1072 Hankson 的趣味题

luogu1072Hankson 的趣味题 [数学]

P1072 Hankson 的趣味题

P1072 Hankson 的趣味题