用c++编写如下题目:在一个阳光明媚的早晨,Demerzel开开心心地来到了教室,然后他发现桌子上有着编号1~5的五个装着水的杯子,这些杯子可能有不同的容积,也可能并没有完全装满水。Demerzel看着面前的水杯,准备开始一个恶作剧。 他将杯子 1 的水倒入杯子 2,然后将杯子 2 中的水倒入杯子 3 , ...... , 然后将杯子 5 中的水倒入杯子 1 ,然后再将杯子 1 的水倒入杯子 2,如此周期性地操作,共计进行 t 次。 当 Demerzel将杯子 a 中的水倒入杯子 b 时,他会倒出尽可能多的水,直到杯子 a 被倒空或是杯子 b 被倒满。 请告诉 Demerzel 当他倒了 t 次之后每个杯子里将会有多少水。输入:前 5 行,每行输入两个整数 xi,yi,分别代表第 i 个杯子的容积和初始水量,保证 yi 不大于 xi,即初始条件下杯子中的水的体积不会超过该杯子的容积。 第 6 行输入一个整数 t,代表Demerzel倒了 t 次水。输出:输出一行,共 5 个整数,代表每个杯子在 t 次操作后的杯中水的体积,每个数字间用一个空格隔开。
时间: 2023-05-23 19:02:20 浏览: 143
以下是C语言代码:
#include <stdio.h>
int main() {
int x[5], y[5], t, i;
scanf("%d%d%d%d%d", &x[0], &y[0], &x[1], &y[1], &x[2]);
scanf("%d%d%d%d", &y[2], &x[3], &y[3], &x[4], &y[4]);
scanf("%d", &t);
while(t--) {
int a = 0, b = 1;
while(b != 0) {
int s = y[a] < x[b] - y[b] ? y[a] : x[b] - y[b];
y[a] -= s;
y[b] += s;
a = b;
b++;
if(b == 5) b = 0;
}
}
for(i = 0; i < 5; i++) {
printf("%d ", y[i]);
}
return 0;
}
当输入 5 3 4 2 3 2 3 1 4 4 1 时,输出结果为: 0 3 3 0 4 即,经过t次操作,每个杯子的水量变化了,其中杯子1与杯子4中的水被倒空了,其余杯子中的水量也有所变化。
阅读全文