开发者社区 问答 正文

遇到一个公平问题,求解答

到了万圣节,Tom要给小朋友们发糖,现在有两个小朋友,他们手里分别有x个糖和 y 个糖 (1<=x,y<=1e9),但是糖少的小朋友就会不开心,Tom 想让他们两个的糖一样多。Tom 的操作是这样的,第一次给他们其中一个小朋友发一个糖,第二次给他们其中一个小朋友两个糖,第三次给他们其中一个小朋友发三个糖,以此类推,问至少要多少次这两个小朋友的糖会变的一样多?输入两个数字,输入 x 和 y,表示两个小朋友刚开始所拥有的糖数。输出 Tom 要发多少次使得两个小朋友的糖一样多。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 17:10:16 418 分享 版权
1 条回答
写回答
取消 提交回答
  • 可以先求出两个小朋友初始的糖的数量差diff,如果diif为 0,则发糖次数为 0。如果diff 不为 0,则需要先计算如果连续给一个小朋友发糖,至少需要发几次才可以使小朋友的糖一样多或实现反超,记这个次数为n,发 n 次糖总共发的糖的数量为mount=(n*n+n)/2。 如果mount- diff为偶数,则最后发糖次数为n。若为奇数,发糖次数为 n+2。 因此输入:[1,4] 输出:2

    2021-12-23 18:57:05
    赞同 展开评论
问答地址: