溶液模拟器

题目描述

小Y太失败了,他虽然在化学实验课中偷来了很多溶液,但是还是没有办法配成想 要的溶液,万一倒错了就没有办法挽回了,小Y迟迟不敢下手。 好在天才就是天才。 小Y到网上下载了一个溶液配置模拟器。溶液配置模拟器是这样的程序:模拟器在电脑中构造一种虚拟溶液,然后你可以虚拟地向当前虚拟溶液中加入一定浓度一定质量的这种溶液,模拟器会快速地算出倒入后虚拟溶液的浓度和质量。当然,计算机最可爱的地方就是当你倒错了可以撤销。
模拟器的使用步骤是这样的:
1.为模拟器设置一个初始质量和浓度V0,C0%(0≤C0≤100)。
2.进行一系列操作,模拟器支持两种操作:
P(v,c)操作:表示向当前的虚拟溶液中加入质量为v浓度为c的溶液;
Z操作:撤销上一步P操作。
但是……小Y不小心把模拟器弄丢了……眼看论文答辩迫在眉睫,小Y只能依靠你了。

输入描述

第一行,两个整数V0,C0。
第二行,一个整数n,表示操作数(n≤10000)。
接下来n行,每行一条操作,格式为:P_v_c或z。
其中_代表一个空格,当只剩初始溶液的时候,再撤销就没有用了。
任意时刻质量不会超过2^31-1。

输出描述

n行,每行两个数Vi,Ci,其中vi为整数,Ci为实数(保留5位小数),之间用一个空格隔 开。其中,第i行表示第i次操作以后的溶液 质量和浓度。

样例

输入

100 100 
2 
P 100 0 
Z

输出

200 50.00000 
100 100.00000

AC:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long p0,n,p[114514],pr=0;
	double v0,v[114514];
	cin>>p0>>v0>>n;
	p[0]=p0;
	v[0]=v0;
	for(int i=1;i<=n;i++){
		char jd;
		cin>>jd;
		if(jd=='Z'){
			if(pr!=0){
				pr--;
			}
		}else{
			long long p1;
			double v1;
			cin>>p1>>v1;
			pr++;
			p[pr]=p[pr-1]+p1;
			v[pr]=(p[pr-1]*v[pr-1]+p1*v1)/p[pr];
		}cout<<p[pr]<<" ";
		printf("%.5lf\n",v[pr]);
	}return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值