zoukankan      html  css  js  c++  java
  • NOIP2009 Hankson的趣味题

    题目描述 Description

    Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson。现
    在,刚刚放学回家的Hankson 正在思考一个有趣的问题。
    今天在课堂上,老师讲解了如何求两个正整数c1 和c2 的最大公约数和最小公倍数。现
    在Hankson 认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公
    倍数”之类问题的“逆问题”,这个问题是这样的:已知正整数a0,a1,b0,b1,设某未知正整
    数x 满足:
    1. x 和a0 的最大公约数是a1;
    2. x 和b0 的最小公倍数是b1。
    Hankson 的“逆问题”就是求出满足条件的正整数x。但稍加思索之后,他发现这样的
    x 并不唯一,甚至可能不存在。因此他转而开始考虑如何求解满足条件的x 的个数。请你帮
    助他编程求解这个问题。

    输入描述 Input Description

    第一行为一个正整数n,表示有n 组输入数据。接下来的n 行每
    行一组输入数据,为四个正整数a0,a1,b0,b1,每两个整数之间用一个空格隔开。输入
    数据保证a0 能被a1 整除,b1 能被b0 整除。

    输出描述 Output Description

    每组输入数据的输出结果占一行,为一个整数。
    对于每组数据:若不存在这样的 x,请输出0;
    若存在这样的 x,请输出满足条件的x 的个数;

    样例输入 Sample Input

    2
    41 1 96 288
    95 1 37 1776

    样例输出 Sample Output

    6
    2

    数据范围及提示 Data Size & Hint

    【说明】
    第一组输入数据,x 可以是9、18、36、72、144、288,共有6 个。
    第二组输入数据,x 可以是48、1776,共有2 个。
    【数据范围】
    对于 50%的数据,保证有1≤a0,a1,b0,b1≤10000 且n≤100。
    对于 100%的数据,保证有1≤a0,a1,b0,b1≤2,000,000,000 且n≤2000。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std; 
    int cnt,tot;
    int a0,a1,b0,b1;
    int gcd(int a,int b)
    {return b==0?a:gcd(b,a%b);}
    bool calc(long long x)
    {
        if(x%a1!=0)return 0;
        return gcd(x/a1,a0/a1)==1&&gcd(b1/b0,b1/x)==1;
    } 
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
            long long ans=0;
            for(int i=1;i*i<=b1;i++)
            {
                if(b1%i==0)
                {
                    ans+=calc(i);
                    if(b1/i!=i)
                    ans+=calc(b1/i);
                }
            }
            printf("%lld
    ",ans);
        }
    }
  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/hyfer/p/5794037.html
Copyright © 2011-2022 走看看