zoukankan      html  css  js  c++  java
  • 杭电2504 又见GCD

    又见GCD

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 19985    Accepted Submission(s): 8352


    Problem Description
    有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。
     
    Input
    第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。
     
    Output
    输出对应的c,每组测试数据占一行。
     
    Sample Input
    2 6 2 12 4
     
    Sample Output
    4 8
    题目看上去不难,但是就是我开始理解错了一个地方,我以为只要是最大公约数的两倍就行,但是在WA了。然后找到了一个例子,24 4 ?,这个?应该是20的,但根据我的算法的话应该是8,但8的话就是24 和8的最大公约数的,所以不成立。
    所以,就暴力求解,从2*b到1000000之间找到最大的那个数字(符合条件的那个数字)。
    然后附上代码:
    #include <iostream>
    #include<math.h>
    #include <iomanip>
    #include<cstdio>
    #include<string>
    #include<map>
    #include<vector>
    #include<list>
    #include<algorithm>
    #include<stdlib.h>
    #include<iterator>
    #include<sstream>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    int gcd(int a,int b)
    {
        int big=a;
        int smal=b;
        int ck;
        if(big<smal)
        {
            ck=a;
            a=b;
            b=a;
        }
        int temp;
        while(smal>0)
        {
            temp=big%smal;
            big=smal;
            smal=temp;
        }
        return big;
    }
    
    
    int main()
    {
        int n;
        cin>>n;
        while(n--)
        {
            int a,b,c;
            cin>>a>>b;
            for(int i=2*b;i<1000000;i=i+b)
            {
                if(gcd(a,i)==b)//暴力寻找
                {
                    c=i;
                    break;
                }
            }
            cout<<c<<endl;
        }
        return 0;
    }
     
  • 相关阅读:
    python 安装包总结
    python wmi使用
    Jquery
    查看linux操作系统位数
    三元
    git clone 指定分支的内容
    慕课网
    http://amazeui.org 后天框架
    tp between
    git pull
  • 原文地址:https://www.cnblogs.com/William-xh/p/7289334.html
Copyright © 2011-2022 走看看