• <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 閱讀(275) 評論(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 
            国产高潮久久免费观看| 亚洲国产精品人久久| 久久婷婷色香五月综合激情| 久久伊人精品一区二区三区| 亚洲av伊人久久综合密臀性色 | 亚洲精品乱码久久久久久蜜桃| 久久久久婷婷| 久久精品国产精品亚洲毛片| 国产精品免费看久久久香蕉| 色欲综合久久中文字幕网| 久久精品国内一区二区三区| 久久精品国产清自在天天线| 久久综合噜噜激激的五月天 | 手机看片久久高清国产日韩| 久久综合88熟人妻| 亚洲国产精品成人AV无码久久综合影院| 精品熟女少妇AV免费久久| 伊人久久精品线影院| 久久精品日日躁夜夜躁欧美| 久久AⅤ人妻少妇嫩草影院| 色婷婷综合久久久久中文| 久久久久久一区国产精品| 久久99国产精品久久99| 欧美黑人又粗又大久久久| 国产精品久久久久蜜芽| 久久综合视频网站| 国产农村妇女毛片精品久久| 久久99精品久久久久婷婷| 久久强奷乱码老熟女网站| 色天使久久综合网天天| 日韩中文久久| 久久久久久国产精品无码下载 | 久久亚洲AV成人出白浆无码国产| 久久精品中文字幕有码| 国产成人精品久久亚洲高清不卡 | 日韩人妻无码一区二区三区久久| 无码人妻久久一区二区三区蜜桃| 久久精品国产亚洲av瑜伽| 精品国产婷婷久久久| 国产亚州精品女人久久久久久| 久久精品国产91久久综合麻豆自制|