题意

输入6个骰子的初始点数,根据条件抛出n次后的每个骰子的点数为多少。
已知抛骰子的条件:
1、每个骰子摇出的点数都跟它之前任何一次出现的点数不同;
2、在满足条件 1 的前提下,每次都能让每个骰子得到可能得到的最大点数。

思路

逐个判断每个骰子与抛出次数的关系,6减去抛的次数的值会大于骰子初始值说明从6往下的n个值就是前n次的骰子点数,直接输出6-n+1即可;反之则要排除初始点数带来的重复影响。

Solution

#include <iostream>
using namespace std;

int main() {
	int a[6], n;
	for (int i = 0; i < 6; i++)
		cin >> a[i];
	cin >> n;
	for (int i = 0; i < 6; i++) {
		if (i) cout << " ";
		if (6 - a[i] >= n)  cout << 6 - n + 1;   //如果从6开始逐减抛的次数还会大于骰子的初始值
		else cout << a[i] - (n - (6 - a[i]));   
	}
	return 0;
}