• <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 
            午夜精品久久久久久中宇| 精品无码人妻久久久久久| 久久人妻AV中文字幕| 日日躁夜夜躁狠狠久久AV| 99久久人妻无码精品系列蜜桃| 大伊人青草狠狠久久| 久久久久无码国产精品不卡| 精品国产青草久久久久福利| 狠色狠色狠狠色综合久久 | 99久久99久久精品免费看蜜桃| 久久99精品综合国产首页| 欧洲国产伦久久久久久久 | 久久Av无码精品人妻系列| 国产精品99久久精品爆乳| 久久99国产精品久久99小说| 成人国内精品久久久久一区| 模特私拍国产精品久久| 狠狠色丁香久久综合五月| 99精品国产免费久久久久久下载| 久久99国产精品久久99果冻传媒 | 97久久超碰成人精品网站| 久久久国产精品| 久久精品国产一区二区三区日韩| 久久精品国产亚洲av麻豆图片| 欧美精品一本久久男人的天堂| 日本欧美久久久久免费播放网| 久久成人小视频| 日本国产精品久久| 久久久久人妻一区精品| 国产亚洲精久久久久久无码AV| 99久久免费国产特黄| 久久国产欧美日韩精品| 人妻无码中文久久久久专区| 中文字幕热久久久久久久| 久久丫忘忧草产品| 亚洲国产精品无码久久一区二区| 中文国产成人精品久久亚洲精品AⅤ无码精品| 精品久久人人做人人爽综合| 久久99精品国产99久久6| 日本加勒比久久精品| 一本久久免费视频|