首页 > 其他分享 >题解:P10570 [JRKSJ R8] 网球(未成功)

题解:P10570 [JRKSJ R8] 网球(未成功)

时间:2024-07-26 09:54:36浏览次数:15  
标签:个齿 gcd 题解 R8 long P10570 write div

题目链接

博客食用更佳 : My blog

这道题不是很难提交记录

分析:

\(A\) 每转 \(a\) 圈,\(B\) 就转 \(b\) 圈,不考虑 \(c\) 的前提下,可知每个齿轮转了 \([a,b]\) 个齿,\(A\) 有 \([a,b] \div a\) 个齿,\(B\) 有 \([a,b] \div b\) 个齿,接着扩倍扩到大于 \(c\)。

拓展:

\[[a,b] = a\times b \div (a,b) \]

这里要用辗转相除法,不知道戳

code:

#include <bits/stdc++.h>
#define in(t) t = read()
#define out(t) write(t);
using namespace std;
long long gcd(long long x, long long y) //求最大公因数
{
	if(x % y == 0) return y;
	return gcd(y, x % y);
}
inline void write(long long x)//数据太大了,快读快写
{
    if(x < 0)
	{
    	putchar('-');
		x = -x;
	}
    if(x > 9) write(x / 10);
    putchar(x % 10 + '0');
}
inline long long read()
{
    long long f = 1, x = 0;
    char c = getchar();
    while (c < '0' || c > '9')
	{
        if (c == '-') f = -1;
        c = getchar();
    }
    while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48),c = getchar();
    return f * x;
}

int main()
{
	long long t;
	in(t);
	while(t--)
	{
		long long a, b, c, lcm, mina, minb, xa, xb;
		in(a); in(b); in(c);
		lcm = a * b / gcd(max(a, b), min(a, b));//最小公倍数
		mina = lcm / a, minb = lcm / b;//不考虑c,a和b的最小旋转圈数
		xa = c / mina, xb = c / minb;
		if(xa * mina < c) xa++;//注意齿轮不够时再转一圈
		if(xb * minb < c) xb++;
		out(max(xa, xb) * (mina + minb));//为了对应上要取A,B转的圈数的最大值
		puts("");
	} 
	return 0;
}

完结~撒花

标签:个齿,gcd,题解,R8,long,P10570,write,div
From: https://www.cnblogs.com/0x3f3f3f3f3f3f/p/18324694

相关文章

  • 题解:P10721 [GESP202406 六级] 计算得分(未成功)
    博客食用更佳:Myblog题目传送门分析:这道题是一个标准的dp。我们可以先预处理多个\(\texttt{abc}\)连成的字符串的最大值,之后可以按最长平台的方法处理。步骤:初值:这题不需要赋值,因为题目保证得分是正的,故初值为\(0\)。状态:\(dp_i\)表示连续\(i\)个\(\texttt{abc......
  • Redis缓存面试问题解析:如何有效管理缓存失效策略?
    在技术面试中,Redis缓存是一个常见的话题。面试官往往会考察候选人对缓存机制的理解以及在实际场景中的应用能力。本文将探讨一个在Redis缓存面试中经常被问到的问题,并深入解析其背后的概念和解决方案。面试问题:如何管理Redis缓存的失效策略?问题描述:在高并发的web应用中,缓存是提......
  • 题解:P10043 [CCPC 2023 北京市赛] 广播
    博客使用更佳:Myblog题目传送门这道题是一个标准的dp了,只不过它要倒序来做。还是分三步。初值:初值想必都知道吧,若要求最小值,就把初值设成无穷大,\(dp_{0,i}\)和\(dp_{i,0}\)都要设成\(i\),\(dp_{0,0}\)一定要赋值成\(0\),这是本人亲自犯过的错误QwQ。状态:\(dp_{i,j}......
  • AtCoder Beginner Contest 360 题解(C-E)
    C-MoveIt题目链接:C-MoveIt题目大意:有\(N\)个盒子和\(N\)个物品编号为\(1-N\),物品\(i\)在盒子\(A_i\)中,重量为\(W_i\),你可以进行一种操作将盒子中的一件物品移动到其他任意盒子中,代价为\(W_i\),求使得所有盒子中只存在一件物品的最小操作代价。题解:贪心,可以发现......
  • CF1843F2 题解
    题面注意到边权只有\(1,-1\),所以有结论:存在值为\(v\)的子段当且仅当\(v\in[\)最小子段和,最大子段和\(]\)。证明:因为移动区间端点,区间和变化连续(+1/-1),从最小子段移动到最大子段,子段和一定经过\(v\),所以得证。于是只要树剖维护最小最大子段和即可。和线段树上维护的数据......
  • CF440D 题解
    题面注意到划分完这棵树以后,每条连通块之间的边的一端一定相同,且是大小为\(k\)的连通块。于是考虑这个连通块的最高点,设\(f(i,j)\)为\(i\)点所在连通块大小为\(j\)时所需的最小边数。令\(f'(i)\)为原来的\(f(i)\)。对于\(i\)的每个\(s\inson(i)\),枚举从\(s\)......
  • CF56E 题解
    题面设骨牌\(i\)倒下之后会连带压倒\([i+1,r_i]\)的骨牌,那么有\(z_i=\max_{j=i+1}^{r_i}z_j+(j-i)\)考虑线段树优化dp,但是\((j-i)\)不好维护,所以套路地修改式子,得到:\(z_i+i=\max_{j=i+1}^{r_i}(z_j+j)\)所以线段树维护\(z_i+i\)的区间最大值即可,\(r_i\)可以二分求......
  • CF86D 题解
    题面看起来线段树之类的不好维护,但是移动区间的增量很好求,数据范围也能过,那么直接莫队就行了。设加入或删除了值\(x\),设原来区间内有\(cnt_x\)个,现在有\(cnt'_x\)个,那么增量就是\(x((cnt'_x)^2-(cnt_x)^2)\),直接求就好了。复杂度\(O(t\sqrtn)\)。#include<bits/stdc+......
  • CF567E 题解
    题面考虑如何一条边是必经之路:设\(cntl_i\)为从\(s\)到\(i\)走最短路的方案数,\(cntr_i\)为从\(i\)到\(t\)最短路方案数。由乘法原理,如果对于边\(e_i=(u,v)\),\(cnt_t=cnt_u\timescntr_v\),则\(e_i\)是最短路上的必经边,输出Yes即可。如果\(cnt_u\timescntr_v=0......
  • 【题解】Solution Set - 杂题选讲「刘君实」
    https://www.becoder.com.cn/contest/5423「HNOI2012」集合选数感觉差不多会。7/25sh杂题听课情况NOI2018冒泡排序【40】几乎不会麦田里的守望者【40】打表找规律、最后dp不太理解星空列车【40】完全不会WereYouLast:知道怎么做,但是不知道为什么是对的A......