• 【数学】codeforces A. Success Rate


    http://codeforces.com/contest/773/problem/A

    【思路】

    用 (x+a)/(y+b) = p/q 来表示其核心思想,其中a 为做对的题目,b为做的题目,则有x+a = k*p,y+b = k*q.且有0<=a<=b,两式合并可得k>=x/p,k>=(y-x)/(q-p), 则如要满足两个等式,k应取其中较大的值(注意:若取得的k为小数,我们需要的是最小整数解,加1),最后注意一下特殊情况 p = 0,p = q.

    最后要注意long long,max(m,n)*q会爆long long。

    【Accepted】

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <cmath>
     4 #include <vector>
     5 #include <algorithm>
     6 #include <set>
     7 #include <map>
     8 #include <queue>
     9 #include <deque>
    10 #include <stack>
    11 #include <string>
    12 #include <bitset>
    13 #include <ctime>
    14 #include<algorithm>
    15 #include<cstring>
    16 using namespace std;
    17 typedef long long ll;
    18 
    19 int main()
    20 {
    21     int T;
    22     int x,y,p,q;
    23     scanf("%d",&T);
    24     while(T--)
    25     {
    26         scanf("%d%d%d%d",&x,&y,&p,&q);
    27         if(p==q)
    28         {
    29             if(x==y)
    30             {
    31                 printf("0
    ");
    32             }
    33             else
    34             {
    35                 printf("-1
    ");
    36             }
    37             continue;
    38         }
    39         if(p==0)
    40         {
    41             if(x==0)
    42             {
    43                 printf("0
    ");
    44             }
    45             else
    46             {
    47                 printf("-1
    ");
    48             }
    49             continue;
    50         }
    51         int m=(y-x)/(q-p)+((y-x)%(q-p)?1:0);
    52         int n=x/p+(x%p?1:0);
    53         cout<<(ll)max(m,n)*(ll)q-(ll)y<<endl;
    54     }
    55     return 0;
    56 }
    View Code
  • 相关阅读:
    SQL行列转换
    ASP.NET 〈%# 〉与〈%=〉的区别
    超级强大的 分页Sql存储过程
    ASP.Net 路径问题
    sql server分页
    JavaScript Rules2
    JavaScript Rules
    Draggable
    PHP面向对象编程静态变量(类变量)
    PHP 面向对象成员方法
  • 原文地址:https://www.cnblogs.com/itcsl/p/6940749.html
Copyright © 2020-2023  润新知