溶液模拟器·数组解法

hi hi hi,又见面啦!

本篇文章为大家带来一道关于“栈”的题………………

废话不多说(废话),请看。

文章目录

    • 描述
    • 输入
    • 输出
    • 样例输入
    • 样例输出

描述

小谢虽然有很多溶液,但是还是没有办法配成想要的溶液,因为万一倒错了就没有办法挽回了。因此,小谢到网上下载了一个溶液配置模拟器。模拟器在计算机中构造一种虚拟溶液,然后可以虚拟地向当前虚拟溶液中加入一定浓度、一定体积的这种溶液,模拟器会快速地算出倒入后虚拟溶液的浓度和体积。模拟器里一单位体积等于一单位质量。当然,如果倒错了可以撤销。模拟器的使用步骤如下:1)为模拟器设置一个初始体积和浓度 V0、C0%。2)进行一系列操作,模拟器支持两种操作:P(v,c)操作:表示向当前的虚拟溶液中加入体积为 v 浓度为 c 的溶液;Z 操作:撤销上一步的 P 操作。

输入

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

输出

n 行,每行两个数 Vi,Ci,其中 Vi 为整数,Ci 为实数(保留 5 位小数)。 其中,第 i 行表示第 i 次操作以后的溶液体积和浓度。

样例输入

100 100
2
P 100 0
Z

样例输出

200 50.00000
100 100.00000

代码

 

#include <iostream>
#include <iomanip>
using namespace std;

struct ry{
      int v;
      double c;
}s[10005];
int top = 1, v1, n;
double c1;
char ch;

int main(){
            cin >> s[top].v >> s[top].c >> n;
              for(int i = 1; i <= n; i++){
                        cin >> ch;
                        if(ch == 'P'){
                                  cin >> v1 >> c1;
                                   s[top + 1].v = s[top].v + v1;
                                   s[top + 1].c = (s[top].v * s[top].c + v1 * c1) / s[top + 1].v;
                                   top++;

                        }else if(ch == 'Z' && top > 1){
                                    top--;
                        }
                         cout << fixed << setprecision(5);
                         cout << s[top].v << " " << s[top].c << endl;
              }
              return 0;
}

小结

本题用数组模拟实现了栈,但真正意义上来说,这个代码与栈基本无关,栈只是一个数据结构,而所有的数据结构都可以用数组来模拟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值