申請SAE

如果您發現本博客的外觀很難看,那是因為部分外觀文件被中國.國家.防火.牆屏.蔽所致!
請翻~牆!

我的Wordpress博客的地址: http://zhuyf.tk/

2012年2月27日 星期一

OI練習題 溶液模擬器 simulator

小 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 行,每行兩個數 V i , C i , 其中 V i 為整數, C i 為實數(保留 5 位小數),之間用一個空格隔開。其中,第 i 行表示第 i 次操作以後的溶液質量和濃度。

 
輸入樣例
100 100
2
P 100 0
Z
輸出樣例
200 50.00000
100 100.00000

【分析】
純模擬。

【我的代碼】

C++语言: Codee#25684
01 #include <cstdio>
02 #include <cstdlib>
03 using namespace std;
04 const int MAXN=10002;
05 double V[MAXN],C[MAXN];
06 int Top=0;
07
08 void init()
09 {
10     double v,c;
11     scanf("%lf %lf\n",&v,&c); 
12     Top++;
13     V[Top]=v;
14     C[Top]=c;
15     return;
16 }
17
18 void Dis()
19 {
20     if(Top==1)
21     {
22         printf("%.0lf %.5lf\n",V[1],C[1]);
23         return;
24     }
25     Top--;
26     printf("%.0lf %.5lf\n",V[Top],C[Top]);
27     return;
28 }
29
30 void Add(double v,double c)
31 {
32     Top++;
33     V[Top]=V[Top-1]+v;
34     C[Top]=(V[Top-1]*C[Top-1]+v*c)/V[Top];
35     printf("%.0lf %.5lf\n",V[Top],C[Top]);
36     return;
37 }
38
39 int main()
40 {
41     freopen("simulator.in","r",stdin);
42     freopen("simulator.out","w",stdout);
43     init();
44     int N;
45     scanf("%d\n",&N);
46     char ch;
47     double v,c;
48    
49     for(int i=1;i<=N;i++)
50     {
51         scanf("%c",&ch);
52         while(ch==10 || ch==13)
53             scanf("%c",&ch);
54         if(ch=='Z')
55         {
56             Dis();
57             continue;
58         }   
59         scanf("%lf %lf\n",&v,&c);
60         Add(v,c);   
61     }
62     return 0;
63 }

沒有留言:

張貼留言