• 洛谷 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代码
  • 相关阅读:
    Springboot websocket学习Demo
    webpack与vue使用
    图片服务器图片剪切处理
    时间字段设置默认值
    函数的递归
    数据类型检测及封装
    隔行变色
    if-else案例–开关灯
    作用域
    数据类型核心操作步骤和原理
  • 原文地址:https://www.cnblogs.com/New-ljx/p/11831871.html
Copyright © 2020-2023  润新知