首页 > 其他分享 >CF773A 题解

CF773A 题解

时间:2023-11-05 16:33:24浏览次数:39  
标签:qq cj pp frac cout int 题解 CF773A

真的是蓝题?这真的不是小学数学题?

我们是要求满足(其中 \(a\) 为正确数,\(b\) 为总数)

\[\frac{x + a}{y + b} = \frac{p}{q} \]

的最小 \(b\)。

我们可以先把右式的分子分母变化到与 \(\frac{x}{y}\) 类似的大小。

int bs1 = x / p + (x % p != 0);
int bs2 = y / q + (y % q != 0);
int bs = max(bs1,bs2);
pp = p * bs;
qq = q * bs;

然后判断,如果 \(x\) 和 \(pp\) 的差值小于 \(y\) 和 \(qq\) 的差值就可以输出了。

否则继续放大。

如果 \(p \geq q\)(其实就是 \(p = q\)),那么放大是无效的。

然后没了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
signed main()
{
    cin>>t;
    while(t--)
    {
        int x,y,p,q,pp,qq;
        cin>>x>>y>>p>>q;
        if(p == 0)
        {
            if(x != 0)cout<<-1<<'\n';
            else cout<<0<<'\n';
            continue;
        }
        int bs1 = x / p + (x % p != 0);
        int bs2 = y / q + (y % q != 0);
        int bs = max(bs1,bs2);
        pp = p * bs;
        qq = q * bs;
        if(pp - x > qq - y && p >= q)cout<<-1<<'\n';
        else if(pp - x > qq - y)
        {
            int cj = pp - x - qq + y;
            int num = cj / (q - p) + (cj % (q - p) != 0);
            pp += num * p;
            qq += num * q;
            cout<<qq - y<<'\n';
        }
        else cout<< qq - y <<'\n';
    }
}

标签:qq,cj,pp,frac,cout,int,题解,CF773A
From: https://www.cnblogs.com/2021cjx-akioi/p/17810666.html

相关文章

  • 【洛谷 P1909】[NOIP2016 普及组] 买铅笔 题解(打擂台法)
    [NOIP2016普及组]买铅笔题目背景NOIP2016普及组T1题目描述P老师需要去商店买支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装......
  • USACO铂金题解
    USACO铂金题解USACO2018PlatiumB.SortItOut很巧妙的转换注意到操作并不会影响没有被选中的牛的相对顺序所以没有被选中的一定单调递增要使得选中的尽可能少,就要选尽可能长的没有被选中的序列,即原序列的\(LIS\)所以原题等价于求原序列第\(k\)大\(LIS\)用树状数组......
  • [ARC140B] Shorten ARC 题解
    分析自然,我们可以想到利用贪心去解题。我们可以证明,$\texttt{ARC}$左右两边$\texttt{A}$和$\texttt{C}$个数多的比少的变为$\texttt{R}$贡献能更多,第奇数次操作比第偶数次能使操作次数更多。于是,我们可以得出这样的一个算法:若为奇数次操作那我们将现有的$\texttt{ARC......
  • 哈理工新生赛题解
    A小亮的睡眠时间思路:求一下一共花了多少时间思考,注意思考时间大于睡觉时间上限的特殊情况。#include<iostream>usingnamespacestd;intmain(){intn;scanf("%d",&n);intsum=0;intcur;inttotal=450;inth=0;ints=0;......
  • CF1089K King Kog's Reception 题解
    题目传送门前置知识线段树解法第一眼感觉和luoguP1083[NOIP2012提高组]借教室很像。本题同样采用线段树维护,\(sum_{l,r}(1\lel\ler\le10^6)\)表示从\(l\simr\)时刻内骑士拜访的总时间,\(maxx_{l,r}(1\lel\ler\le10^6)\)表示从\(l\simr\)时刻内骑士......
  • [ABC327G] Many Good Tuple Problems 题解
    题意对于一对长度均为\(M\)且元素值在\(\left[1,N\right]\)之间的序列\((S,T)\),定义其为好的当且仅当:存在一个长度为\(N\)的\(01\)序列\(X\),使得其满足如下条件:对于任意\(i\in\left[1,M\right]\),有\(X_{S_i}\neqX_{T_i}\)。给定\(N,M\),求在所有可......
  • CF1721A Image题解
    转裁自我的洛谷博客:https://www.luogu.com.cn/blog/653832/Code-of-CF1721A-Image题意简述给你一个2×2的矩阵,每次可以将一个或两个字母变成任意的其他字母,问最少用几步能将矩阵中的字母变成一样的。思路可以先分类讨论可能会出现的情况(如下表)。根据1,2,3列可得出暴力做法,即......
  • VM安装RedHat7虚机ens33网络不显示IP问题解决
    1、今天在VMware中安装RedHat7.4虚拟机,网络连接使用的是NAT连接方式,刚开始安装成功之后输入ifconfig还能看到ens33自动分配的IP地址,但是当虚机关机重启后,再查看IP发现原来的ens33网络已经没有了,只变成了这两个:然后输入ipa查看网卡信息发现出现了下面的信息:ens33:<BROADCA......
  • B3610 [图论与代数结构 801] 无向图的块 题解
    题目传送门前言本题解内容均摘自我的Tarjan学习笔记。解法Tarjan与无向图无向图与割点(割顶)在一个无向图中,不存在横叉边(因为边是双向的)。一个无向图中,可能不止存在一个割点。割点(割顶):在一个无向图中,若删除节点\(x\)以及所有与\(x\)相关联的边之后,图将会被分......
  • NEFU OJ Problem1356 帽儿山奇怪的棋盘 题解
    帽儿山奇怪的棋盘题目:TimeLimit:1000ms|MemoryLimit:65535KDescription军哥来到了帽儿山,发现有两位神人在顶上对弈。棋盘长成下图的模样:每个点都有一个编号:由上到下,由左到右,依次编号为1、2……12。两位神人轮流博弈,每一轮操作的一方可以取走一个棋子,或者取走相邻的两......