zoukankan      html  css  js  c++  java
  • 每日一道题2014/7/23

    10015 - Hankson的趣味题

    Time Limit: 1000MS
    Memory Limit: 65535KB

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

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

    Sample Input
    2
    41 1 96 288
    95 1 37 1776



    Sample Output
    6
    2



    Hint

    参考:http://www.cnblogs.com/lxshanye/archive/2013/05/20/3088558.html

    思路:动态数组,辗转相除

    结果:oj:system error  

       个人:样例测试成功

    代码:

    #include<iostream>
    using namespace std;
    
    int bei(int x,int y)
    {
        int temp,a,b,bei;
         if(x < y)        
         {                
             temp = x; 
             x = y; 
             y = temp;        
         }        
         a = x; 
         b = y;        
         while(b != 0)        
         {                
             temp = a % b;                
             a = b;                
             b = temp;        
         }
         return x*y/a;
    }
    int check(int a0,int a1,int b0,int b1)
    {
        if(a0%a1!=0||b1%b0!=0)
            return 0;
        int temp=a1,num=0;
        for(int k=1;temp<=b1;k++)
        {
            if(bei(temp,b0)==b1)
                num++;
            temp=a1*k;
        }
        return num;
    }
    void main()
    {
        int n;
        cin>>n;
        int **p=new int*[n];
        int *q=new int[n];
        for(int i=0;i<n;i++)
        {
            p[i]=new int[4];
            for(int j=0;j<4;j++)
                cin>>p[i][j];
            q[i]=check(p[i][0],p[i][1],p[i][2],p[i][3]);
        }
        for(int l=0;l<n;l++)
            cout<<q[l]<<endl;
    }
    因为弱小,所以要变强,因为不想灭亡,所以选择战斗
  • 相关阅读:
    《jQuery实战(第二版)》读书笔记
    软件测试对于代码安全的诸多事宜
    关于Maven的安装及初步使用
    Windows下GIT安装与使用(上传远程端)
    白盒测试
    关于VS2013的编码的UI测试。
    闰年检验
    等价类划分例子中的些许添加
    软件测试技术第二周课堂等价类习题
    软件测试技术第一周课堂随笔记录
  • 原文地址:https://www.cnblogs.com/cmjason/p/3864066.html
Copyright © 2011-2022 走看看