zoukankan      html  css  js  c++  java
  • poj2410

    模拟

    View Code
    #include <iostream>
    using namespace std;
    
    const    int maxn=32;
    
    int        byte[maxn];
    
    void init()
    {
        int        i;
    
        for (i=1;i<=31;i++)
            cin>>byte[i];
    }
    
    int num(int add)
    {
        int        x=0,temp=1;
        
        while (add)
        {
            x+=add%10*temp;
            add/=10;
            temp*=2;
        }
        return x;
    }
    
    int    binary(int h)
    {
        int        bin[9],x=0,i,ans=0;
    
        while (h)
        {
            bin[++x]=h%2;
            h/=2;
        }
        for (i=x;i>=1;i--)
            ans=ans*10+bin[i];
        return ans;
    }
    
    void inc(int &accu)
    {
        int        i=1,temp;
        
        temp=num(accu)+1;
        if (temp>255)
            temp=0;
        accu=binary(temp);
    }
    
    void dec(int &accu)
    {
        int        i=1,temp;
        
        temp=num(accu)-1;
        if (temp<0)
            temp=255;
        accu=binary(temp);
    }
    
    int work()
    {
        int        accu=0,pc=0,x,ord;
        
        while (true)
        {
            x=num(byte[pc]%100000);
            ord=byte[pc]/100000;
            pc++;
            if (pc>31)
                pc=0;
            switch(ord)
            {
                case 0    :
                    byte[x]=accu;
                    break;
                case 1    :
                    accu=byte[x];
                    break;
                case 10    :
                    pc=accu==0?x:pc;
                    break;
                case 11    :
                    break;
                case 100:
                    dec(accu);
                    break;
                case 101:
                    inc(accu);
                    break;
                case 110:
                    pc=x;
                    break;
                case 111:
                    return accu;
                    break;
            }
        }
    }
    
    void make(int x)
    {
        int        temp=10000000;
    
        if (x==0)
        {
            cout<<"00000000\n";
            return;
        }
        while (x/temp==0)
        {
            cout<<"0";
            temp/=10;
        }
        cout<<x<<endl;
    }
    
    int main()
    {
    //    freopen("t.txt","r",stdin);
        while (cin>>byte[0])
        {
            init();
            make(work());
        }
        return 0;
    }
  • 相关阅读:
    40-cut 简明笔记
    50-ln 简明笔记
    35-less 简明笔记
    37-more 简明笔记
    9-cat 简明笔记
    64-who 简明笔记
    60-chmod 修改文件的权限
    useradd 添加用户
    14-find 查找文件
    层次越低的人,越容易放弃自己
  • 原文地址:https://www.cnblogs.com/rainydays/p/2861385.html
Copyright © 2011-2022 走看看