• Two Cakes


    It's New Year's Eve soon, so Ivan decided it's high time he started setting the table. Ivan has bought two cakes and cut them into pieces: the first cake has been cut into a pieces, and the second one — into b pieces.

    Ivan knows that there will be n people at the celebration (including himself), so Ivan has set n plates for the cakes. Now he is thinking about how to distribute the cakes between the plates. Ivan wants to do it in such a way that all following conditions are met:

    1. Each piece of each cake is put on some plate;
    2. Each plate contains at least one piece of cake;
    3. No plate contains pieces of both cakes.

    To make his guests happy, Ivan wants to distribute the cakes in such a way that the minimum number of pieces on the plate is maximized. Formally, Ivan wants to know the maximum possible number x such that he can distribute the cakes according to the aforementioned conditions, and each plate will contain at least x pieces of cake.

    Help Ivan to calculate this number x!

    Input

    The first line contains three integers n, a and b (1 ≤ a, b ≤ 100, 2 ≤ n ≤ a + b) — the number of plates, the number of pieces of the first cake, and the number of pieces of the second cake, respectively.

    Output

    Print the maximum possible number x such that Ivan can distribute the cake in such a way that each plate will contain at least x pieces of cake.

    Example
    Input
    5 2 3
    Output
    1
    Input
    4 7 10
    Output
    3
    Note

    In the first example there is only one way to distribute cakes to plates, all of them will have 1 cake on it.

    In the second example you can have two plates with 3 and 4 pieces of the first cake and two plates both with 5 pieces of the second cake. Minimal number of pieces is 3.

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    using namespace std;
    int main()
    {
        int n,a,b,m = 0;
        cin>>n>>a>>b;
        for(int i = 1;i < n;i ++)
        {
            int d = min(a/i,b/(n - i));
            if(d > m)m = d;
        }
        cout<<m;
    }
  • 相关阅读:
    Openwrt单独编译某一个模块而不是整个固件
    在ubuntu 14.04 编译android 2.3.1 错误解决办法
    使用cydia substrate 来进行android native hook
    使用Privoxy转化SSH到HTTP代理
    使用xposed 来解阿里ctf-2014 第三题
    一个android dex 转java源码工具
    git CVE-2014-9390 验证以及源码对比
    一键结束port 5037占用
    运动物体检测——光流法(摄像机固定)
    运动目标检测ViBe算法
  • 原文地址:https://www.cnblogs.com/8023spz/p/8364821.html
Copyright © 2020-2023  润新知