博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round#412 C Success Rate
阅读量:4114 次
发布时间:2019-05-25

本文共 652 字,大约阅读时间需要 2 分钟。

题意: 给你x,y,p,q; 其中 x,y,p,q 代表的含义为   x/y,  p/q,让你求一个b,使得(x+a)/(y+b)=p/q;并且求得的b还是最小。

思路:其实这就相当于一个数学问题中求定义域的问题,因为x,y,p,q,a,b都是整数,我们可以这样转化       x+a=k*p,y+b=k*q;这样的解有很多个,为了求最小的b,那么当k最小的时候b最小,这时我们先把p,q化为互质 的数,再求最小的k,这时候求得的b就是最小的,这里有限制条件  其中  a>=0,a<=b,把上面的式子转化一下就可以求出来了。

答案就是  b=k*q-y;

还要注意使用long long 要不然会溢出。运用数学的思想,通过一些条件限制一下变量

代码如下:

#include 
#include
#include
using namespace std;int gcd(int x,int y){ return y==0?x:gcd(y,x%y);}int main(){ int T; cin>>T; while(T--) { int x,y,p,q; cin>>x>>y>>p>>q; int temp=gcd(p,q); p=p/temp; q=q/temp; if(p==0) { if(x==0) cout<<0<

转载地址:http://eygsi.baihongyu.com/

你可能感兴趣的文章
MySQL Tricks1
查看>>
python 变量作用域问题(经典坑)
查看>>
pytorch
查看>>
pytorch(二)
查看>>
pytorch(三)
查看>>
pytorch(四)
查看>>
pytorch(5)
查看>>
pytorch(6)
查看>>
ubuntu相关
查看>>
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>