zoukankan      html  css  js  c++  java
  • POJ 2410

    #include <iostream>
    #include <cmath>
    #include <string>
    using namespace std;
    
    
    int give_value();
    int give_address();
    int give_dos();
    
    struct node
    {
        int address;
        int dos;
        int value;
    };
    
    int pc;
    
    int accu;
    string s="00000000";
    node _node[32];
    
    void give_to_bin(int num);
    
    int main()
    {
        //freopen("acm.acm","r",stdin);
        int i;
        int j;
    
        while(cin>>s)
        {
            _node[0].value = give_value();
            _node[0].dos = _node[0].value>>5;
            _node[0].address = _node[0].value%32;
            for(i = 1; i <= 31; ++ i)
            {
                cin>>s;
                _node[i].value = give_value();
                _node[i].dos = _node[i].value>>5;
                _node[i].address = _node[i].value%32;
            }
        
            pc = 0;
            accu = 0;
            while(true)
            {
                if(_node[pc].dos == 0)
                {
                    _node[_node[pc].address].value = accu;
                    _node[_node[pc].address].dos =_node[_node[pc].address].value>>5;
                    _node[_node[pc].address].address = _node[_node[pc].address].value%32;
                    ++ pc;
                }
                else if(_node[pc].dos == 1)
                {
                    accu = _node[_node[pc].address].value;
                    ++ pc;
                }
                else if(_node[pc].dos == 2)
                {
                    if(accu == 0)
                    {
                        pc =_node[pc].address;
                    }
                    else 
                    {
                        ++ pc;
                    }
                }
                else if(_node[pc].dos == 3)
                {
                    ++ pc;
                }
                else if(_node[pc].dos == 4)
                {
                    if(accu == 0)
                    {
                        accu = 255;
                    }
                    else
                        -- accu;
                    ++ pc;
                }
                else if(_node[pc].dos == 5)
                {
                    ++ accu;
                    ++ pc;
                }
                else if(_node[pc].dos == 6)
                {
                    pc = _node[pc].address;
                }
                else if(_node[pc].dos == 7)
                {
                    break;
                }
                accu %= 256;
                pc %= 32;
            }
    
            give_to_bin(accu);
            cout<<s<<endl;
        }
    }
    
    int give_value()
    {
        int value = 0;
        int i;
        for(i = 7; i >= 0; -- i)
        {
            value += (s[i]-'0')*pow((double)2,7-i);
        }
        return value;
    }
    
    void give_to_bin(int num)
    {
        s = "00000000";
        int i = 7;
        while(num)
        {
            s[i] = char(num%2+'0');
            num /= 2;
            -- i;
        }
    }
  • 相关阅读:
    字符转int 的几种方法
    递归在类中的写法
    修改多维才智的名字
    max中用 .net 判断输入的邮箱地址是否合格。
    找处场景中同名称的结点
    Android Button [ 学习笔记 一 ] 原创
    Android中Listview注意事项
    Android 移动开发一本就够学习笔记一
    ListActivity 学习[原创]
    在 Eclipse 中导入 Android 示例程序
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4568418.html
Copyright © 2011-2022 走看看