信息学奥赛一本通(C++版)在线评测系统http://ybt.ssoier.cn:8088/problem_show.php?pid=2069
2069:【例2.12 】糖果游戏
【题目描述】
某幼儿园里,有5个小朋友编号为1、2、3、4、5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友同样这么做。问一轮后,每个小朋友手上分别有多少糖果。
【输入】
5个小朋友的糖果数。
【输出】
游戏后5个小朋友的糖果数。(按5位宽度输出)
【输入样例】
8 9 10 11 12
【输出样例】
11 7 9 11 6
【解释】
题目水,但还是得讲。
我们从题目知道,小p友是在圆桌上做一个分糖果游戏的。
1.用for语言判断两旁的人(当然,你可以一个一个做,但太麻烦了),分给对应的糖果,1和5得特判。 1要分给5和2,5要分给1和4。把糖 分成3份。
【代码】
#include <bits/stdc++.h>
using namespace std;
int a[6];
int main() {
int candy;
for(int i=1; i<=5; i++)
cin>>a[i];
for(int i=1; i<=5; i++) {
candy=a[i]/3;
if(i==1) {
a[5]+=candy;
a[2]+=candy;
} else if(i==5) {
a[1]+=candy;
a[4]+=candy;
} else {
a[i-1]+=candy;
a[i+1]+=candy;
}
a[i]=candy;
}
for(int i=1; i<=5; i++)
printf("%5d",a[i]);
}