zoey
点击国内主页可以让浏览速度加快哦 ~ !

关于HDOJ 1283题(最简单的计算机) 的理解(C/C++)

2019-08-18 hdoj 杭电ACM集训队训练赛(VII) 简单题
Word count: 558 | Reading time: 2min


    emmmmmm,水题,感觉没啥说的





题目描述:最简单的计算机

最简单的计算机
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/32768 K (Java/Others)

Problem Description
    一个名叫是PigHeadThree的研究组织设计了一台实验用的计算机,命名为PpMm。PpMm只能执行简单的六种命令A,B,C,D,E,F;只有二个内存M1,M2;三个寄存器R1,R2,R3。六种命令的含义如下:
命令A:将内存M1的数据装到寄存器R1中;
命令B:将内存M2的数据装到寄存器R2中;
命令C:将寄存器R3的数据装到内存M1中;
命令D:将寄存器R3的数据装到内存M2中;
命令E:将寄存器R1中的数据和寄存器R2中的数据相加,结果放到寄存器R3中;
命令F:将寄存器R1中的数据和寄存器R2中的数据相减,结果放到寄存器R3中。
你的任务是:设计一个程序模拟PpMm的运行。

Input
    有若干组,每组有2行,第一行是2个整数,分别表示M1和M2中的初始内容;第二行是一串长度不超过200的由大写字母A到F组成的命令串,命令串的含义如上所述。

Output
    对应每一组的输入,输出只有一行,二个整数,分别表示M1,M2的内容;其中M1和M2之间用逗号隔开。

其他说明:R1,R2,R3的初始值为0,所有中间结果都在-2^31和2^31之间。

Sample Input
100 288
ABECED
876356 321456
ABECAEDBECAF

Sample Output
388,388
2717080,1519268

Author

    SmallBeer(CML)

Source

    杭电ACM集训队训练赛(VII)



原题链接

More info:Question




Accepted代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
#include<string>
using namespace std;
int M1, M2;
int R1, R2, R3;
string input_;
void load(char x) {
if ('A' == x) R1 = M1;
if ('B' == x) R2 = M2;
if ('C' == x) M1 = R3;
if ('D' == x) M2 = R3;
if ('E' == x) R3 = R1 + R2;
if ('F' == x) R3 = R1 - R2;
return;
}
int main() {
while (cin >> M1 >> M2 >> input_) {
R1 = R2 = R3 = 0;
for (int i = 0; i < input_.size(); i++)
load(input_[i]);

cout << M1 << "," << M2 << endl;
}
return 0;
}

参考博客

Author: Zoey

Link: https://zoey1038569979.github.io/2019/08/18/hdoj1283/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
关于HDOJ 1302题(The Snail 蜗牛爬井) 的理解(C/C++)
NextPost >
关于HDOJ 1282题(回文数猜想) 的理解(C/C++)
CATALOG
  1. 1. 题目描述:最简单的计算机
  2. 2. 原题链接
  3. 3. Accepted代码
  4. 4. 参考博客