• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            superman

            聚精會神搞建設 一心一意謀發展
            posts - 190, comments - 17, trackbacks - 0, articles - 0
               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            ZOJ 1098 - Simple Computers

            Posted on 2008-04-03 13:41 superman 閱讀(269) 評論(0)  編輯 收藏 引用 所屬分類: ZOJ
            Implement #1:
             1 /* Accepted 1098 C++ 00:00.01 844K */
             2 #include <stack>
             3 #include <string>
             4 #include <iostream>
             5 
             6 using namespace std;
             7 
             8 int main()
             9 {
            10     string mem[32];
            11     
            12     while(cin >> mem[0])
            13     {
            14         int accu, pc;
            15         
            16         for(int i = 1; i < 32; i++)
            17             cin >> mem[i];
            18         
            19         accu = 0; pc = 0;
            20         while(true)
            21         {
            22             int x = 0, m[] = {168421};
            23             
            24             string ins = mem[pc].substr(03);
            25             string num = mem[pc].substr(38);
            26             for(int i = 0; i < num.size(); i++)
            27                 x += (num[i] - '0'* m[i];
            28             
            29             pc = (++pc) % 32;
            30             
            31             if(ins == "000")
            32             {
            33                 stack <char> st;
            34                 int n = accu;
            35                 while(n)
            36                 {
            37                     st.push(n % 2 + '0');
            38                     n /= 2;
            39                 }
            40                 while(st.size() < 8)
            41                     st.push('0');
            42                 for(int i = 0; i < 8; i++)
            43                 {
            44                     mem[x][i] = st.top();
            45                     st.pop();
            46                 }
            47             }
            48             if(ins == "001")
            49             {
            50                 accu = 0;
            51                 int m[] = {1286432168421};
            52                 for(int i = 0; i < 8; i++)
            53                     accu += (mem[x][i] - '0'* m[i];
            54             }
            55             if(ins == "010")
            56                 if(accu == 0)
            57                     pc = x;
            58             if(ins == "100")
            59             {
            60                 accu--;
            61                 if(accu < 0)
            62                     accu = 255;
            63             }
            64             if(ins == "101")
            65                 accu = (++accu) % 256;
            66             if(ins == "110")
            67                 pc = x;
            68             if(ins == "111")
            69                 break;
            70         }
            71         
            72         stack <int> st;
            73         while(accu)
            74         {
            75             st.push(accu % 2);
            76             accu /= 2;
            77         }
            78         while(st.size() < 8)
            79             st.push(0);
            80         for(int i = 0; i < 8; i++)
            81         {
            82             cout << st.top();
            83             st.pop();
            84         }
            85         cout << endl;
            86     }
            87     
            88     return 0;
            89 }
            90 

            Implement #2:
             1 /* Accepted 1098 C++ 00:00.01 836K */
             2 #include <string>
             3 #include <iostream>
             4 
             5 using namespace std;
             6 
             7 int main()
             8 {
             9     string s;
            10     while(cin >> s)
            11     {
            12         int mem[32= {0}, m[] = {1286432168421};
            13         
            14         for(int i = 0; i < 8; i++)
            15             mem[0+= (s[i] - '0'* m[i];
            16         for(int i = 1; i < 32; i++)
            17         {
            18             cin >> s;
            19             for(int j = 0; j < 8; j++)
            20                 mem[i] += (s[j] - '0'* m[j];
            21         }
            22         
            23         int accu = 0, pc = 0;
            24         bool over = false;
            25         while(over == false)
            26         {
            27             pc %= 32;
            28             
            29             int x = mem[pc] & 31;   // (31)10  = (00011111)2
            30             switch(mem[pc] & 224)   // (224)10 = (11100000)2
            31             {
            32                 case  0  : mem[x] = accu; pc++;   break;
            33                 case 32  : accu = mem[x]; pc++;   break;
            34                 case 64  : if(accu == 0)
            35                                pc = x;
            36                             else
            37                                 pc++;             break;
            38                 case 96  : pc++;                  break;
            39                 case 128 : accu--;
            40                            if(accu < 0)
            41                                accu = 255;
            42                            pc++;                  break;
            43                 case 160 : accu = (++accu) % 256;
            44                            pc++;                  break;
            45                 case 192 : pc = x;                break;
            46                 case 224 : over = true;           break;
            47             }
            48         }
            49         for(int i = 7; i >= 0; i--)
            50             cout << ((accu >> i) & 1);
            51         cout << endl;
            52     }
            53     
            54     return 0;
            55 }
            56 
            久久精品国产日本波多野结衣| 久久国产精品99国产精| 97久久精品午夜一区二区| 奇米综合四色77777久久| 久久精品这里热有精品| 久久一区二区三区免费| 久久久久久久久久久久中文字幕 | 久久亚洲美女精品国产精品| 亚洲精品国产成人99久久| 久久99国产精品久久99小说| 久久综合丁香激情久久| 人妻精品久久无码专区精东影业| 久久夜色tv网站| 人妻精品久久无码专区精东影业| 欧美精品丝袜久久久中文字幕 | 国产午夜精品理论片久久影视| 亚洲国产一成久久精品国产成人综合| 99久久99久久| 国产精品久久婷婷六月丁香| 久久精品亚洲精品国产欧美| 久久亚洲春色中文字幕久久久| 久久久噜噜噜久久| 亚洲国产成人久久综合碰碰动漫3d| 久久婷婷色香五月综合激情| 中文字幕成人精品久久不卡| 久久精品国产亚洲AV香蕉| 精品无码久久久久国产动漫3d| 亚洲国产高清精品线久久| 国产成人无码精品久久久久免费| 久久九九精品99国产精品| 99精品国产免费久久久久久下载| 亚洲国产精品综合久久一线| 久久精品中文字幕一区| 国产精品VIDEOSSEX久久发布| A狠狠久久蜜臀婷色中文网| 精品熟女少妇a∨免费久久| 国内精品久久久久影院一蜜桃| 久久久国产精品亚洲一区| 999久久久无码国产精品| 97热久久免费频精品99| 69国产成人综合久久精品|