AtCoder Regular Contest 062--C - AtCoDeerくんと選挙速報AtCoDeer and Election Report(找规律)

    xiaoxiao2021-04-15  279

    C - AtCoDeerくんと選挙速報 / AtCoDeer and Election Report


    Time Limit: 2 sec / Memory Limit: 256 MB

    Score : 300300 points

    Problem Statement

    AtCoDeer the deer is seeing a quick report of election results on TV. Two candidates are standing for the election: Takahashi and Aoki. The report shows the ratio of the current numbers of votes the two candidates have obtained, but not the actual numbers of votes. AtCoDeer has checked the report NN times, and when he checked it for the ii-th (1≦i≦N)(1≦i≦N) time, the ratio was Ti:AiTi:Ai. It is known that each candidate had at least one vote when he checked the report for the first time.

    Find the minimum possible total number of votes obtained by the two candidates when he checked the report for the NN-th time. It can be assumed that the number of votes obtained by each candidate never decreases.

    Constraints

    1≦N≦10001≦N≦10001≦Ti,Ai≦1000(1≦i≦N)1≦Ti,Ai≦1000(1≦i≦N)TiTi and AiAi (1≦i≦N)(1≦i≦N) are coprime.It is guaranteed that the correct answer is at most 10181018.

    Input

    The input is given from Standard Input in the following format:

    NN T1T1 A1A1 T2T2 A2A2 :: TNTN ANAN

    Output

    Print the minimum possible total number of votes obtained by Takahashi and Aoki when AtCoDeer checked the report for the NN-th time.


    Sample Input 1 Copy

    Copy

    3 2 3 1 1 3 2

    Sample Output 1 Copy

    Copy

    10

    When the numbers of votes obtained by the two candidates change as 2,3→3,3→6,42,3→3,3→6,4, the total number of votes at the end is 1010, which is the minimum possible number.


    Sample Input 2 Copy

    Copy

    4 1 1 1 1 1 5 1 100

    Sample Output 2 Copy

    Copy

    101

    It is possible that neither candidate obtained a vote between the moment when he checked the report, and the moment when he checked it for the next time.


    Sample Input 3 Copy

    Copy

    5 3 10 48 17 31 199 231 23 3 2

    Sample Output 3 Copy

    Copy

    6930

    以后 遇到这样的题就要多推理一遍,这样的一般是可以找到规律的,要多积累经验。

    其实就是看上下数的关系,对于a,b,每次让他除以当前数向上取整,再找到规律就行了,CEIL可能精度丧失,手写一个比较好。

    #include<bits/stdc++.h> using namespace std; #define ll long long ll ceils(ll x,ll y) { ll ans=x/y; if(x%y)ans++; return ans; } int main() { ll n; cin>>n; ll x,y; cin>>x>>y; ll a=x,b=y; for(ll i=1;i<n;i++) { cin>>x>>y; ll num=max(ceils(a,x),ceils(b,y)); a=x*num; b=y*num; } cout<<a+b<<endl; }

     


    最新回复(0)