信息学奥赛c++ 溶液模拟器 正解

本文介绍如何使用C++编写信息学奥赛中的溶液模拟器,重点讨论了代码爆红的原因及解决方案,包括检查初始浓度和质量是否存储、处理只剩初始溶液时的特殊情况,以及注意多组测试数据的输出。文中建议使用double类型处理浓度,并提到使用结构体等其他可能的实现方式。
摘要由CSDN通过智能技术生成
题目描述
现有一个溶液配置模拟器。溶液配置模拟器是这样的程序:模拟器在电脑中构造一种虚拟溶液,然后你可以虚拟地向当前虚拟溶液中加入一定浓度、一定质量的这种溶液,模拟器会快速地算出倒入后虚拟溶液的浓度和质量。当然,当你倒错溶液时可以及时撤销操作。
模拟器的使用步骤是这样的:
1.为模拟器设置一个初始质量和浓度V0、C0%(0≤C0≤100)。
2.进行一系列操作,模拟器支持两种操作:
①P(v,c)操作:表示向当前的虚拟溶液中加入质量为v浓度为c的溶液;
②Z操作:撤销上一步P操作。

输入格式
第一行,两个整数V0,C0。 
第二行,一个整数N(N<=10000),表示操作数; 接下来N行,每行一条操作,格式为:P v c或Z(P,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

说明
【样例说明】
质量计算方法:当前溶液质量+新溶液质量
对于样例来说:100+100=200;
浓度计算方法:(当前溶液浓度*当前溶液质量+新溶液浓度*新溶液质量)/(当前溶液质量+新溶液质量)
对于样例来说:(100*100+0*100)/(100+100)=10000/200=50


思路:
①先输入初始质量和浓度
②输入操作步骤
③根据字符s等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值