洛谷B2020
题目描述
某个幼儿园里,有 5 位小朋友编号依次为 1,2,3,4,5 他们按照自己的编号顺序围坐在一张圆桌旁。他们身上有若干糖果,现在他们玩一个分糖果游戏。从 1 号小朋友开始,将自己的糖果均分成 3 份(如果有多余的糖果,就自己立即吃掉),自己留一份,其余两份分给和他相邻的两个小朋友。接着 2,3,4,5号小朋友也这样做。问一轮结束后,每个小朋友手上分别有多少糖果。
输入格式
一行,5个用空格隔开的 int 范围内的正整数,分别是游戏开始时 1,2,3,4,5号小朋友手里糖果的数量。
输出格式
2 行,第 1 行是用一个空格隔开的 5个整数,表示一轮游戏结束后 1,2,3,4,5号小朋友手里糖果的数量。第 22 行是一个整数,表示一轮游戏过程中吃掉的糖果的总数。
运行代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[5],count=0;
for(int j=0;j<5;j++)
{
cin>>a[j];
}
for(int i=0;i<5;i++)
{
count+=a[i]%3;
if(i==0){
a[1]+=a[0]/3;
a[4]+=a[0]/3;
}
else if(i==4){
a[3]+=a[i]/3;
a[0]+=a[i]/3;
}
else{
a[i+1]+=a[i]/3;
a[i-1]+=a[i]/3;
}
a[i]=a[i]/3;
}
for(int j=0;j<5;j++)
{
cout<<a[j]<<" ";
}
cout<<endl;
cout<<count;
return 0;
}
运行结果:
需要注意的第一点是一轮结束是从私以为小朋友开始到最后一位小朋友结束,需要单独考虑的是第一位和最后一位小朋友,因为第一位小朋友的糖果要分给,第二位和最后一位,最后一位小朋友的糖果需要分给倒数第二位和第一位。
需要注意的第二点是数组的设定,数组设定从a[0]开始,那么到a[4]小朋友均存储完毕。从1开始则需要到5才能结束。