zoukankan      html  css  js  c++  java
  • [AtCoder3856]Ice Rink Game

    Problem Statement

    An adult game master and N children are playing a game on an ice rink. The game consists of K rounds. In the i-th round, the game master announces:

    • Form groups consisting of Ai children each!

    Then the children who are still in the game form as many groups of Ai children as possible. One child may belong to at most one group. Those who are left without a group leave the game. The others proceed to the next round. Note that it's possible that nobody leaves the game in some round.

    In the end, after the K-th round, there are exactly two children left, and they are declared the winners.

    You have heard the values of A1A2, ..., AK. You don't know N, but you want to estimate it.

    Find the smallest and the largest possible number of children in the game before the start, or determine that no valid values of N exist.

    Constraints

    • 1≤K≤105
    • 2≤Ai≤109
    • All input values are integers.

    Input

    Input is given from Standard Input in the following format:

    K
    A1 A2  AK
    

    Output

    Print two integers representing the smallest and the largest possible value of N, respectively, or a single integer −1 if the described situation is impossible.

    Sample Input 

    4
    3 4 3 2
    

    Sample Output 

    6 8

    怎么说呢,这题在愚人节出真的是耐人寻味,赤裸裸的模拟题啊。
    显然,因为给定了结束时的人数,我们可以通过倒推求解。
    对于min值,若上轮的每组人数正好可以整除当前人数,不做任何操作;否则,更新为当前人数和上轮每组人数的最小公倍数。
    对于max值,记k为当前人数除以上轮每组人数向下取整,则更新为(k+1)*上轮每组人数-1。
    对于无解情况,可以证明此时max小于min。
    上代码!
    #include<cstdio>
    #include<cstring>
    typedef long long ll;
    int n;
    ll a[100005],ans1=2,ans2=2;
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        for(int i=n;i;i--){
            if(ans1%a[i])ans1/=a[i],ans1=ans1*a[i]+a[i];
            ans2=(ans2/a[i]+1)*a[i]-1;
        }
        if(ans1>ans2)puts("-1");
        else printf("%lld %lld
    ",ans1,ans2);
        return 0;
    }
    View Code
  • 相关阅读:
    一行代码轻松修改 Text Field 和 Text View 的光标颜色 — By 昉
    六种手势识别,你用了哪些?——董鑫
    Mac 屏幕录制Gif 制作 By-胡罗
    利用ICMP协议的PING命令获取客户端当前网络质量 by徐文棋
    iOS加载Gif图片的N种方式 By-H罗
    [手游项目3]-10-Go语言atomic原子操作
    [手游项目3]-9-Go语言sync.Map(在并发环境中使用的map)
    LRU原理和Redis实现
    Cleanup failed to process the following paths错误的解决
    [手游项目3]-8-排行榜redis实现
  • 原文地址:https://www.cnblogs.com/Marser/p/8724117.html
Copyright © 2011-2022 走看看