您的位置:首页 > 游戏 > 手游 > 上海迪士尼网页制作_天津企业网站推广方法_发布软文_企业管理培训课程网课免费

上海迪士尼网页制作_天津企业网站推广方法_发布软文_企业管理培训课程网课免费

2025/4/23 4:14:12 来源:https://blog.csdn.net/Jasmine_llq/article/details/147017437  浏览:    关键词:上海迪士尼网页制作_天津企业网站推广方法_发布软文_企业管理培训课程网课免费
上海迪士尼网页制作_天津企业网站推广方法_发布软文_企业管理培训课程网课免费

题目描述

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 的个数。请你帮助他编程求解这个问题。

输入格式

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

输出格式

共 n 行。每组输入数据的输出结果占一行,为一个整数。

对于每组数据:若不存在这样的 x,请输出 0,若存在这样的 x,请输出满足条件的 x 的个数;

输入输出样例

输入 #1复制

2 
41 1 96 288 
95 1 37 1776 

输出 #1复制

6 
2

说明/提示

【样例解释】

第一组输入数据,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×109 且 n≤2000。

NOIP 2009 提高组 第二题

代码实现;

#include<iostream>
#include<cmath>
using namespace std;
int gongyue(int i,int a0)
{
    int j,k=1;
    for(j=1;j<=min(i,a0);j++)
    {
        if(i%j==0 && a0%j==0)
        {
            k=j;
        }
    }
    return k;
}
int gongbei(int i,int b0)
{
    int j,k=1;
    for(j=min(i,b0);j<=i*b0;j++)
    {
        if(j%i==0 && j%b0==0)
        {
            k=j;
            break;
        }
    }
    return k;
}
int main()
{
    int n,a0,a1,b0,b1;
    int i,j,k;
    cin>>n;
    while(n--)
    {   int count=0;
        cin>>a0>>a1>>b0>>b1;
        for(i=1;i*i<=b1;i++)
        {
            if(b1%i==0)
            {
            if((gongyue(i,a0)==a1) && (gongbei(i,b0)==b1))
            {
                count++;
                //cout<<i<<endl;
            }
            if(i!=b1/i)
            {
                j=b1/i;
                if((gongyue(j,a0)==a1) && (gongbei(j,b0)==b1))
            {
                count++;
                //cout<<i<<endl;
            }
                
             } 
            }
            
            
        }
        cout<<count<<endl;
    }
    return 0;
 } 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com