コンピュータシミュレーション(hd 1283)
5764 ワード
最も簡単なコンピュータ
Problem Description
PigHeadThreeという研究組織がPpMmという実験用のコンピュータを設計した.PpMmは簡単な6種類の命令A,B,C,D,E,Fしか実行できない.メモリM 1,M 2は2つしかありません.3つのレジスタR 1,R 2,R 3.6つのコマンドの意味は次のとおりです.
命令A:メモリM 1のデータをレジスタR 1に入れる.
命令B:メモリM 2のデータをレジスタR 2に入れる.
コマンドC:レジスタR 3のデータをメモリM 1に入れる.
コマンドD:レジスタR 3のデータをメモリM 2に入れる.
コマンドE:レジスタR 1のデータとレジスタR 2のデータを加算し、レジスタR 3に格納する.
コマンドF:レジスタR 1のデータとレジスタR 2のデータとを減算し、レジスタR 3に格納する.
あなたの任務は、PpMmの実行をシミュレートするプログラムを設計することです.
Input
いくつかのグループがあり、各グループは2行あり、第1行は2つの整数で、それぞれM 1とM 2の初期内容を表す.2行目は、上述したように、大文字A〜Fからなる命令列の長さが200を超えない列である.
Output
各グループの入力に対応して、出力は1行、2つの整数だけで、それぞれM 1、M 2の内容を表す.ここで、M 1とM 2の間はカンマで区切られている.
その他の説明:R 1,R 2,R 3の初期値は0であり、すべての中間結果は-2^31と2^31の間にある.
Sample Input
100 288
ABECED
876356 321456
ABECAEDBECAF
Sample Output
388,388
2717080,1519268
Problem Description
PigHeadThreeという研究組織がPpMmという実験用のコンピュータを設計した.PpMmは簡単な6種類の命令A,B,C,D,E,Fしか実行できない.メモリM 1,M 2は2つしかありません.3つのレジスタR 1,R 2,R 3.6つのコマンドの意味は次のとおりです.
命令A:メモリM 1のデータをレジスタR 1に入れる.
命令B:メモリM 2のデータをレジスタR 2に入れる.
コマンドC:レジスタR 3のデータをメモリM 1に入れる.
コマンドD:レジスタR 3のデータをメモリM 2に入れる.
コマンドE:レジスタR 1のデータとレジスタR 2のデータを加算し、レジスタR 3に格納する.
コマンドF:レジスタR 1のデータとレジスタR 2のデータとを減算し、レジスタR 3に格納する.
あなたの任務は、PpMmの実行をシミュレートするプログラムを設計することです.
Input
いくつかのグループがあり、各グループは2行あり、第1行は2つの整数で、それぞれM 1とM 2の初期内容を表す.2行目は、上述したように、大文字A〜Fからなる命令列の長さが200を超えない列である.
Output
各グループの入力に対応して、出力は1行、2つの整数だけで、それぞれM 1、M 2の内容を表す.ここで、M 1とM 2の間はカンマで区切られている.
その他の説明:R 1,R 2,R 3の初期値は0であり、すべての中間結果は-2^31と2^31の間にある.
Sample Input
100 288
ABECED
876356 321456
ABECAEDBECAF
Sample Output
388,388
2717080,1519268
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5 int main()
6 {
7 int M1,M2;
8 while(cin>>M1>>M2)
9 {
10 int i;
11 int R1=0,R2=0,R3=0;
12 getchar();
13 char a[201];
14 gets(a);
15 for(i=0;a[i]!='\0';i++)
16 {
17 if(a[i]=='A')
18 R1=M1;
19 if(a[i]=='B')
20 R2=M2;
21 if(a[i]=='C')
22 M1=R3;
23 if(a[i]=='D')
24 M2=R3;
25 if(a[i]=='E')
26 R3=R1+R2;
27 if(a[i]=='F')
28 R3=R1-R2;
29 }
30 cout<<M1<<','<<M2<<endl;
31 }
32 }