Codeforces Round #412 C. Success Rate (数论)

来源:互联网 发布:蓝月传奇轮回系统数据 编辑:程序博客网 时间:2024/06/08 08:42

参考http://blog.csdn.net/dormousenone/article/details/71404361

题意记 AC 率为当前 AC 提交的数量 x / 总提交量 y 。已知最喜欢的 AC 率为 p/q (pq∈[0,1]) 。 求最少在提交多少题(AC or NOT)能恰好达到 AC 率为 p/q

分析;这个地方要推公式比较好,也有别人的方法是用二分http://blog.csdn.net/mengxiang000000/article/details/71406203

记得要从第二的的不等式中推出方程。。

#include<bits/stdc++.h>using namespace std;long long x, y, p, q;int main(){    int T;    scanf("%d",&T);    while(T--)    {        cin>>x>>y>>p>>q;        if(p==q){            printf("%d\n", x==y?0:-1);  continue;        }        if(p==0){            printf("%d\n", x==0?0:-1);  continue;        }        long long GCD = __gcd(p, q);        p /= GCD,   q /= GCD;        long long n = max(ceil(x*1.0/p), ceil((y-x)*1.0/(q-p)));        printf("%I64d\n", n*q-y);    }}