题目描述:
牛牛是个非常热心的人,所以他有很多的朋友。这一天牛牛跟他的n个朋友一起出去玩,在出门前牛牛的妈妈给了牛牛k块糖果,牛牛决定把这些糖果的一部分分享给他的朋友们。由于牛牛非常热心,所以他希望他的每一个朋友分到的糖果数量都比牛牛要多(严格意义的多,不能相等)。牛牛想知道他最多能吃到多少糖果?

解题思路:
二分
left=0,right=k
check函数:
假定自己留x块糖果
则朋友们每人至少x+1块糖果
(x+1)*n+x>=k

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 返回牛牛能吃到的最多糖果数
     * @param n long长整型 
     * @param k long长整型 
     * @return long长整型
     */
    long long Maximumcandies(long long n, long long k) {
        // write code here
        long long left=0,right=k,ans=0;
        while(left<=right)
        {
            long long mid=left+(right-left)/2;
            if(check(n,k,mid))
            {
                ans=mid;
                left=mid+1;
            }
            else
                right=mid-1;
        }
            return ans;
    }

    bool check(long long n,long long k,long long mid)
    {
        return (__int128)(mid + 1) * n + mid <= k;
    }
};

题目解答代码是在看过直播之后敲得,做题过程中完全没有想到二分问题,而且照着敲还敲错了一部分,完全没有发现自己敲错中文括号,导致(__int128)完全无法通过,百度了好久,自己加了头文件,折腾了好久,才通过!
新手小菜鸡,慢慢加油!