zoukankan      html  css  js  c++  java
  • HDU1713 相遇周期 LCD LCM

      简单点说题目就是要求连个分数的最小公倍数,这个题目上次在参加比赛时遇到过,不过那时候是用很暴力的方法过的。本来上次我们已经推出来是求两个最简形式分数的分母的最小公倍数以及分母的最大公约数,不过就是A不掉,不过还好这次过掉了,方法论证是没错的。

      对于两个最简的分数 a / b, c / d 把他们两个的最小公倍数 x / y 也设为一个分数形式,那么这个 x 一定能够整除 a , c, y 一定能够被 b , d整除。那么要求得最小公倍数,那么肯定是分子尽量小,即 a , c 的最小公倍数, 分母尽量大, 即 b , d 的最大公约数。

      代码如下:

     1 #include <stdio.h>
    2 #include <stdlib.h>
    3 #include <math.h>
    4 #include <string.h>
    5
    6 int gcd( int x, int y )
    7 {
    8 if( y == 0 )
    9 return x;
    10 else
    11 return gcd( y, x % y );
    12 }
    13
    14 int lcm( int x, int y )
    15 {
    16 return x / gcd( x, y ) * y;
    17 }
    18
    19 int main()
    20 {
    21 int T;
    22 scanf( "%d", &T );
    23 while( T-- )
    24 {
    25 int a, b, c, d, rx, ry;
    26 scanf( "%d/%d", &a, &b );
    27 scanf( "%d/%d", &c, &d );
    28 int t = gcd( a, b );
    29 a /= t, b /= t;
    30 t = gcd( c, d );
    31 c /= t, d /= t;
    32 if( gcd( b, d ) == 1 )
    33 {
    34 printf( "%d\n", lcm( a, c ) );
    35 }
    36 else
    37 {
    38 printf( "%d/%d\n", lcm( a, c ), gcd( b, d ) );
    39 }
    40 }
    41 return 0;
    42 }
  • 相关阅读:
    Python-24-Django(Model Form、Ajax、上传文件、KindEditor)
    P23-Django-model、Form补充 & 序列化
    P22-Django-Session、CSRF、Form、信号
    21-Python-Django进阶补充篇
    Python-Django进阶
    Python-18-Django 基础篇
    17-前端开发之jQuery
    15-前端开发之JavaScript
    14-前端开发之CSS
    14-前端开发之HTML
  • 原文地址:https://www.cnblogs.com/Lyush/p/2155942.html
Copyright © 2011-2022 走看看