C++魔法师元素平衡

题目描述

元素平衡
《XX魔法书》中记载,只有魔法师体内地火水风四种元素平衡的时候才是绝对安全的。某魔法师在给自己做了一个体检, 发现自己体内的四种元素数量分别是A,B,C,D,魔法师慌了,这时他看到魔法书中记载了一种转换魔法, 可以把任意两个单位的元素转换成任意一种元素。
请问魔法师是否可以通过这种魔法,在保证自己体内的元素总量尽可能多的情况下, 使得自己体内的四种元素数量完全相同?如果可以,请输出平衡后体内元素总量,如果不能请输出-1。

限制条件

时间限制:3000ms
内存限制:589824kb

输入描述

输入仅包含一行,仅包含4个正整数A,B,C,D,分别表示四种元素的数量。
(1<=A,B,C,D<=10^17)

输出描述

输出仅包含一个整数,如题所示。

样例输入

1 2 2 4

样例输出

8

思路说明

通过读题,我们可以判断ABCD四个数,最终应该变成相等的数X。
首先,X一定是在max{ABCD}到min{ABCD}之间的,且以X为分界,高于它的数在转换的过程中是减少的,低于它的数是增加的。也就是说,ABCD可以分为两个部分,一部分增加,一部分减少。如果我们确定了增加和减少的数是哪些,那也就可以推导出X。
由于转换是2换1,那么元素减少的数dec减去的部分sum(dec(i)-X)是元素增加的数add增加sum(X-add(i))的两倍,即下面这个公式:
s u m ( d e c ) − s i z e o f ( d e c ) ∗ X = 2 ∗ ( s i z e o f ( a d d ) ∗ X − s u m ( a d d ) ) sum(dec)-sizeof(dec)*X=2*(sizeof(add)*X-sum(add)) sum(dec)sizeof(dec)X=2(sizeof(add)Xsum(add))
然后,推导得到X为
X = s u m ( d e c ) + 2 ∗ s u m ( a d d ) s i z e o f ( d e c ) + 2 ∗ s i z e o f ( a d d ) . . . . . . . . ( 1 ) X=\frac{sum(dec)+2*sum(add)}{sizeof(dec)+2*sizeof(add)} ........(1) X=sizeof(dec)+2si

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值