【端午小練】HDU1021-最簡單的計算機
最簡單的計算機
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4355 Accepted Submission(s): 2478
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)
AC代碼:
#include<stdio.h> #include<string.h> char order[300]; int main() { int i,j,M1,M2,n,R1,R2,R3; while(scanf("%d %d",&M1,&M2)!=EOF) { scanf("%s",order); n=strlen(order); R1=0;R2=0;R3=0; for(i=0;i<n;i++) { switch(order[i]) { case 'A':R1=M1;break; case 'B':R2=M2;break; case 'C':M1=R3;break; case 'D':M2=R3;break; case 'E':R3=(R1+R2);break; case 'F':R3=(R1-R2);break; } } printf("%d,%d\n",M1,M2); } return 0; }
最後更新:2017-04-03 08:26:19