luogu-P10570 [JRKSJ R8] 网球

题目传送门:

[JRKSJ R8] 网球 - 洛谷https://www.luogu.com.cn/problem/P10570

解题思路

数学问题,暴力这个范围会超时。

首先,找出这两个数的最大公因数,将这两个数分别除以最大公因数,则这两个数互质,判断如果有一方<=c,求出他们翻倍的倍数(ceil(c*1.0/min(a,b))),那么将他们分别乘ceil(c*1.0/min(a,b))(这里如果用循环会超时),即可求出a+b最小值,这里主要考察两个数除最大公因数为互质,即结果会最小。

代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a,long long b)
{
    return b?gcd(b,a%b):a;
}
int main()
{
    long long t,a,b,c,r,x,y;
    for(cin>>t; t; t--)
    {
        scanf("%lld%lld%lld",&a,&b,&c);
        r=gcd(a,b); //求出最大公因数,使他们互质 
        a/=r;
        b/=r;
        x=a;
        y=b;
        if(x < c || y < c){
        	long long d = ceil(c*1.0/min(a,b)); //求出翻倍的倍数 
        	x = d*a;
        	y = d*b;
		}
        cout<<x+y<<endl; //输出 
    }
    return 0;
}
相关推荐
过过过呀Glik28 分钟前
在 Ubuntu 上安装 Muduo 网络库的详细指南
linux·c++·ubuntu·boost·muduo
刚学HTML1 小时前
leetcode 05 回文字符串
算法·leetcode
蜀黍@猿1 小时前
【C++ 基础】从C到C++有哪些变化
c++
Am心若依旧4091 小时前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
zh路西法1 小时前
【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(一):从电梯出发的状态模式State Pattern
c++·决策树·状态模式
AC使者2 小时前
#B1630. 数字走向4
算法
冠位观测者2 小时前
【Leetcode 每日一题】2545. 根据第 K 场考试的分数排序
数据结构·算法·leetcode
轩辰~2 小时前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
lxyzcm2 小时前
C++23新特性解析:[[assume]]属性
java·c++·spring boot·c++23
蜀黍@猿2 小时前
C/C++基础错题归纳
c++