zoukankan      html  css  js  c++  java
  • P1072 HanksonHankson 的趣味题

    题意:给定$a_0,a_1,b_0,b_1$

       问有多少x满足1:$gcd(x,a_0)=a_1$

              2:$lcm(x,b_0)=b_1$

    思路:暴力枚举(当然不是死枚举)

       枚举$a_1$的倍数,判断。。

      然而,,,,50分+TLE

    正解:

    首先:对于已知:1:$gcd(x,a_0)=a_1$得

                  $gcd(frac{x}{a_1},frac{a_0}{a_1})=1$

                                2:$lcm(x,b_0)=b_1$ 可得

              $gcd(x,b_0)=x*frac{b_0}{lcm(x,b_0)}=x*frac{b_0}{b_1}$

              所以:$gcd(frac{x}{frac{x*b_0}{b_1}},frac{b_0}{frac{x*b_0}{b_1}})=1$

              化简得:$gcd(frac{b_1}{b_0},frac{b_1}{x})=1$

      整理一下:  $left{egin{aligned}gcd(frac{x}{a_1},frac{a_0}{a_1})=1\gcd(frac{b_1}{b_0},frac{b_1}{x})=1end{aligned} ight.$

    所以: x 是 $a_1$ 的整数倍而且是$b_1$的因子

    做法:$O(sqrt{b_1})$枚举 $b_1$ 的因子(也就是 x),如果这个数是 $a_1$ 的整数倍并且满足那两个式子,则 ans++

      

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define olinr return
    #define love_nmr 0
    #define _ 0
    int n;
    int a0,a1,b0,b1;
    int ans;
    inline int gcd(int x,int y)
    {
        return y? gcd(y,x%y):x;
    }
    signed main()
    {
        scanf("%d",&n);
        while(n--)
        {
            ans=0;
            scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
            int A=a0/a1;
            int B=b1/b0;
            for(int i=1;i*i<=b1;i++)
            {
                if(b1%i==0)
                {
                    if(i%a1==0&&gcd(i/a1,A)==1&&gcd(b1/i,B)==1) ans++;
                    int ano=b1/i;
                    if(ano==i) continue;
                    if(ano%a1==0&&gcd(ano/a1,A)==1&&gcd(b1/ano,B)==1) ans++;
                }
            }
            printf("%d
    ",ans);
        }
        olinr ~~(0^_^0)+love_nmr;
    }

      

  • 相关阅读:
    深入理解Kafka-学习笔记04-部分生产者客户端参数
    深入理解Kafka-学习笔记03-消息有序性
    IDEA包不存在找不到包解决方案
    深入理解Kafka-学习笔记02-生产者整体架构
    深入理解Kafka-学习笔记01-初识Kafka
    ClickHouse与MySQL数据类型对应
    MySQL查看版本
    从apache phoenix表提取数据为CSV
    Kafka查看版本
    HBASE查看版本
  • 原文地址:https://www.cnblogs.com/olinr/p/9486427.html
Copyright © 2011-2022 走看看