编程介的小学生 2017-09-06 18:04 采纳率: 20.5%
浏览 871
已采纳

Bitland

Problem Description
很久很久以前曾经有一个古老的国度叫做bitland,bitland原本是三个小的国家,and, or, xor, 他们分别由各自的君主anddy, orry, xorry统治着,后来在三个君主的协商下,合并为一个共同的国家,并由三个君主共同制定宪法,在制定法律时,需要采用某种方式来管理三个国家的人口关系,为了体现自己国家的个性,三个君主分别制定了一条规则。分别是,三个国家的人口数and起来必须为0,三个国家的人口数or起来并取补必须为0,三个国家的人口数xor起来并取补必须为0.
这个联盟维持了上百年的时间,最终还是因为三个君主利益不合的问题而发生了分裂,战争爆发了,没有人知道一共经历了多少场大大小小的战斗。但古老的羊皮卷记载着战争的一些琐碎:bitland的每一个臣民都参加拿起了武器,参加到战斗中,每一个国家都将他们的所有人口编为很多小队,为了方便管理和记录,每个小队的人数必须是2的方幂(别忘了他们采用2进制计数),另外在分队时还会使小队的数目尽量地少。
当两个国家爆发一场战斗,他们派出各自的人数最少的一个小队,他们的战斗没有任何战术可言,人多的一方一定会胜利,并俘虏敌方的整个小队成为自己的战斗力,并将俘虏带回自己的国家。另外如果一个小队到达另外一个国家时,那个国家已经没有任何人口,他们就会生出反叛之心,自己占领那个国家。
几亿年后,战争终于结束了,三个国家又重归于好,bitland的臣民又过上了幸福的生活,没有人再提起那场战争,你是bitland的一个考古学家,当你从祖父口中偶然得知了这场辉煌的战争,你决定要去走访bitland的每一个角落,去了解这场战争的每一个细节。第一步,你必须去了解一共发生了多少场战斗。你查找古老的羊皮卷,得知了战争开始前每个国家有多少人口,并统计到了战争结束时三个国家的人口数,你现在希望算出至少发生过多少场战争。

Input
六行分别是六个整数,x1,y1,z1,x2,y2,z2,分别代表战争前和战争后三个国家的人口数(小于2*10^18) 若全为零则结束输入

Output
一个整数,即最少一共经历了多少战争(小于2*10^18);

Sample Input
1 0 0 0 0 1

Sample Output
1

初始状态符合条件:1 and 0 and 0=0 not(1 or 0 or 0)=0 not(1 xor 0 xor 0)=0 最少经历了一场战争,
即and和xor发生一场战斗,and国家有1个小队,每个小队1人,
xor国家没有人口,故and国家的小队会占领xor国家,人口数变成0,0,1.

  • 写回答

1条回答

  • threenewbee 2017-09-22 00:34
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。