开发者社区> 问答> 正文

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

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

展开
收起
游客4skzfvnrxrzbi 2021-12-23 17:10:16 391 0
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
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载