zoukankan      html  css  js  c++  java
  • 洛谷 P2118 比例简化(枚举)

    嗯...

    题目链接:https://www.luogu.org/problem/P2118

    这道题的出题人很善良,l的范围不是很大,所以我们可以逐一枚举。

    本题主要思想就是把所有的比例都转换为乘积的形式。

    因为 i / j >= A / B

    所以 i * B >= j * A

    因为要找差距最小

    所以 i / j < C / D

    所以 i * D < j * C

    综上所述,查找到的 i,j 应当满足 i * B >= j * A && i * D < j * C && i,j 的最小公因数为1。

    AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 
     4 using namespace std;
     5 
     6 int a, b, c, d = 1, l;
     7 
     8 inline int gcd(int x, int y){
     9     if(y == 0) return x;
    10     return gcd(y, x % y);
    11 }
    12 
    13 int main(){
    14     scanf("%d%d%d", &a, &b, &l);
    15     c = l;
    16     for(int i = 1; i <= l; i++){
    17         for(int j = 1; j <= l; j++){
    18             if(gcd(i, j) == 1 && i * b >= j * a && i * d < j * c){
    19                 c = i;
    20                 d = j;
    21             }
    22         }
    23     }
    24     printf("%d %d", c, d);
    25     return 0;
    26 }
    AC代码
  • 相关阅读:
    python-socket1
    python-网络编程
    linux-常用指令3
    linux-vim/编辑器
    linux-常用指令2
    linux-常用指令1
    MySQL 练习题
    33 python 并发编程之IO模型
    32 python 并发编程之协程
    31 python下实现并发编程
  • 原文地址:https://www.cnblogs.com/New-ljx/p/11831871.html
Copyright © 2011-2022 走看看