洛谷刷题笔记 分糖果

题目描述

某个幼儿园里,有 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 号小朋友手里糖果的数量。第 2 行是一个整数,表示一轮游戏过程中吃掉的糖果的总数。

输入输出样例

输入 #1复制

8 9 10 11 12

输出 #1复制

11 7 9 11 6
6

参考程序1

#include 
#include 
using namespace std;
//是给相邻同学不是后两位!!!即i+1 && i-1
int main()
{
	int a[5];
	for (int i = 0; i < 5; i++)
	{
		cin >> a[i];
	}
	int count = 0;
	for (int i = 0; i < 5; i++)
	{
		count += a[i] % 3;//计算吃掉的糖果
		a[(i + 1) % 5] += a[i] / 3;//可能会溢出(5->1)
		if (i == 0)
			a[4] += a[i] / 3;//第一位同学给第五位
		else
			a[(i - 1)] += a[i] / 3;
		a[i] = a[i] / 3;
	}
	for (int i = 0; i < 5; i++)
	{
		cout << a[i] << " ";
	}
	cout << endl;
	cout << count;
	return 0;
}

参考程序2

#include
using namespace std;
int main(){
	int a,b,c,d,e,ans;
	cin>>a>>b>>c>>d>>e;
	ans=a%3;
	b+=a/3;
	e+=a/3;
	a=a/3;
	ans=ans+b%3;
	a+=b/3;
	c+=b/3;
	b=b/3;
	ans=ans+c%3;
	b+=c/3;
	d+=c/3;
	c=c/3;
	ans=ans+d%3;
	c+=d/3;
	e+=d/3;
	d=d/3;
	ans=ans+e%3;
	d+=e/3;
	a+=e/3;
	e=e/3;
	cout<

你可能感兴趣的:(洛谷,c++,蓝桥杯,算法,c语言)