版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/88550649
题目
甲、乙、丙、丁四人共有糖若干块,甲先拿出一些糖分给另外三人,使他们三人的糖数加倍;乙拿出一些糖分给另外三人,也使他们三人的糖数加倍;丙、丁也照此办理,此时甲、乙、丙、丁四人各有16块,编程求出四个人开始各有糖多少块。
代码
#include "stdio.h"
void main(){
// 分配结束时,甲乙丙丁分别为:a[0],a[1],a[2],a[3]
int a[4] = {16,16,16,16};
int i,sum,j;
// 将每个人的糖恢复初始,顺序根据题目倒着推,丁,丙,乙,甲
for(i=3;i>=0;i--){
sum =0;
// 当是i时,它的值先不动,其他的值j都减半,并使用sum,记录减半的值
for(j=0;j<4;j++){
if(j!=i){
a[j] = a[j]/2;
sum = sum+a[j];
}
}
// 将减半的值赋值给i
a[i] = a[i] +sum;
}
for(i=0;i<4;i++)
printf("%d ",a[i]);
}