• UVa 10033


      题目大意:模拟题,有一些寄存器和随机访问内存,给你一些指令以及它们代表的操作,模拟操作即可。

     1 #include <cstdio>
     2 #include <cstring>
     3 #define REGN 10
     4 #define RAMN 1000
     5 
     6 int reg[REGN], ram[RAMN];
     7 
     8 int main()
     9 {
    10 #ifdef LOCAL
    11     freopen("in", "r", stdin);
    12     //freopen("out", "w", stdout);
    13 #endif
    14     int n;
    15     scanf("%d", &n);
    16     getchar();
    17     char s[100];
    18     fgets(s, sizeof(s), stdin);
    19     bool first = true;
    20     while (n--)
    21     {
    22         memset(ram, 0, sizeof(ram));
    23         int k = 0;
    24         while (fgets(s, sizeof(s), stdin))
    25         {
    26             if (s[0] == '
    ')   break;
    27             sscanf(s, "%d", &ram[k]);
    28             k++;
    29         }
    30         int p = 0;         // p point to the location that will execute
    31         int cnt = 0;
    32         memset(reg, 0, sizeof(reg));
    33         bool end = false;
    34         while (!end)
    35         {
    36             //printf("%d
    ", ram[p]);
    37             int hund = ram[p] / 100;
    38             int ten = (ram[p] % 100) / 10;
    39             int unit = ram[p] % 10;
    40             cnt++;
    41             switch(hund)
    42             {
    43                 case 1:
    44                     if (ram[p] == 100) 
    45                     {
    46                         end = true;
    47                         break;
    48                     }
    49                 case 2:
    50                     reg[ten] = unit;
    51                     p++;
    52                     break;
    53                 case 3:
    54                     reg[ten] += unit;
    55                     reg[ten] %= 1000;
    56                     p++;
    57                     break;
    58                 case 4:
    59                     reg[ten] *= unit;
    60                     reg[ten] %= 1000;
    61                     p++;
    62                     break;
    63                 case 5:
    64                     reg[ten] = reg[unit];
    65                     p++;
    66                     break;
    67                 case 6:
    68                     reg[ten] += reg[unit];
    69                     reg[ten] %= 1000;
    70                     p++;
    71                     break;
    72                 case 7:
    73                     reg[ten] *= reg[unit];
    74                     reg[ten] %= 1000;
    75                     p++;
    76                     break;
    77                 case 8: 
    78                     reg[ten] = ram[reg[unit]];
    79                     p++;
    80                     break;
    81                 case 9:
    82                     ram[reg[unit]] = reg[ten];
    83                     p++;
    84                     break;
    85                 case 0:
    86                     if (reg[unit] != 0)   p = reg[ten];
    87                     else p++;
    88                     break;
    89             }
    90         }
    91         if (first)   first = false;
    92         else printf("
    ");
    93         printf("%d
    ", cnt);
    94     }
    95     return 0;
    96 }
    View Code

      第一次没在输出之间加一个空行,WA了,又粗心了...同时,又一次疑惑,uva对这种情况是判别为WA而不是PE吗?

  • 相关阅读:
    OpenState: Programming Platform-independent Stateful OpenFlow Applications Inside the Switch
    带状态论文粗读(二)
    In-band Network Function Telemetry
    基于微信小程序的失物招领系统的Postmortem
    OpenStack安装
    Alpha冲刺Day12
    冲刺合集
    Alpha冲刺Day11
    Alpha冲刺总结
    测试总结
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3187960.html
Copyright © 2020-2023  润新知