閱讀29 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【端午小練】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

  上一篇:go 連載:麵向對象葵花寶典:思想、技巧與實踐(33) - ISP原則
  下一篇:go RDS-SQL SERVER用戶控製台監控信息詳解