zoukankan      html  css  js  c++  java
  • UVA 11889 Benefit

    题意: lcm(a, b) = c; c是a,b的最小共倍数, 现在给出a, c, 要你求出最小的b.

    解题思路:
             1. 如果c%a != 0 表示无解. 设b = c/a; 当gcd(a, b)==1时, 表示b就是要求的结果. 如果gcd(a, b) != 1;
                 那么lcm(a, b)一定小于c. 你想一想为什么会这样, 因为原本a中有一部份与结果b相同. 那么, 说明
                 a影响了b的值.
             2. 例如: a = 12 = 2^2*3^1, b = 16 = 2^4, c = 48 = 2^4*3^1;  b' = c/a = 4 = 2^2;
                 如果b'就是b与a不相同的部分. 那么我们求出的b‘ 如果gcd(a, b') != 1表明a有一部份影响了结果.
                 这样我们要求出原来的b, 就需要b'*gcd(a, b'), a/gcd(a, b');循环这个过程知道gcd(a, b') == 1为止.
                 那么b'得到原本的结果b.

        //摘抄自http://blog.sina.com.cn/s/blog_77dc9e080101jhq7.html

    ps:代码自己敲得。。。orz

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int a,c,b;
     5 int gcd (int a,int b){
     6 return b==0?a:gcd (b,a%b);
     7 }
     8 
     9 int main (){
    10 int t;
    11 cin>>t;
    12 while (t--){
    13 cin>>a>>c;
    14 if (c%a==0){
    15 b=c/a;
    16 int d;
    17 d=gcd(a,b);
    18 while (d!=1){
    19 b*=d;
    20 a/=d;
    21 d=gcd (a,b);
    22 }
    23 cout<<b<<endl;
    24 }
    25 else
    26 cout<<"NO SOLUTION"<<endl;
    27 }
    28 return 0;
    29 }
  • 相关阅读:
    iOS网络开发之AFNetworking
    TCP/IP、Http、Socket的区别
    iOS开发
    iOS 10相关技术
    HTTP协议详解
    HTTPS和HTTP的区别
    CocoaPods
    关于 iOS 10 中 ATS 的问题
    Run Loop详解
    iOS开发项目之MVC与MVVM
  • 原文地址:https://www.cnblogs.com/gfc-g/p/3848237.html
Copyright © 2011-2022 走看看