心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
又是一个杯具的2Y。题目很简单,一步一步来就行啦。
以下是我的代码:
#include<iostream>
#include
<string>
#include
<algorithm>
#include
<cstdio>
#include
<cstring>
using namespace std;

int n,cnt,r[17];
string cmd[1007];

void Init()
{
    n
=-1;
    cnt
=0;
    memset(r,
0,sizeof(r));
    
for(int i=0;i<1000;i++)
        cmd[i]
="000";
}

void _2(const string &s)
{
    r[s[
1]-'0']=s[2]-'0';
}

void _3(const string &s)
{
    r[s[
1]-'0']+=s[2]-'0';
    r[s[
1]-'0']%=1000;
}

void _4(const string &s)
{
    r[s[
1]-'0']*=s[2]-'0';
    r[s[
1]-'0']%=1000;
}

void _5(const string &s)
{
    r[s[
1]-'0']=r[s[2]-'0'];
}

void _6(const string &s)
{
    r[s[
1]-'0']+=r[s[2]-'0'];
    r[s[
1]-'0']%=1000;
}

void _7(const string &s)
{
    r[s[
1]-'0']*=r[s[2]-'0'];
    r[s[
1]-'0']%=1000;
}

void _8(const string &s)
{
    r[s[
1]-'0']=atoi(cmd[r[s[2]-'0']].c_str());
}

void _9(const string &s)
{
    
int t(r[s[1]-'0']);
    
string tmp;
    
while(t>0)
    {
        tmp
+=(char)(t%10+'0');
        t
/=10;
    }
    
while(tmp.size()<3)
        tmp
+="0";
    reverse(tmp.begin(),tmp.end());
    cmd[r[s[
2]-'0']]=tmp;
}

int main()
{
    #ifndef ONLINE_JUDGE
    freopen(
"data.in","r",stdin);
    
#endif
    
    
int T;
    cin
>>T;cin.get();
    cin.
get();
    
for(int case_num=1;case_num<=T;case_num++)
    {
        Init();
        
        
string s;
        
while(getline(cin,s) && s!="")
        {
            n
++;
            cmd[n]
=s;
        }
        
        
for(int i=0;i<1000;i++)
        {
            cnt
++;
            
if(cmd[i]=="100")
                
break;
            
            
switch(cmd[i][0])
            {
                
case '2':
                    _2(cmd[i]);
                    
break;
                
case '3':
                    _3(cmd[i]);
                    
break;
                
case '4':
                    _4(cmd[i]);
                    
break;
                
case '5':
                    _5(cmd[i]);
                    
break;
                
case '6':
                    _6(cmd[i]);
                    
break;
                
case '7':
                    _7(cmd[i]);
                    
break;
                
case '8':
                    _8(cmd[i]);
                    
break;
                
case '9':
                    _9(cmd[i]);
                    
break;
                
case '0':
                    
if(r[cmd[i][2]-'0'])
                        i
=r[cmd[i][1]-'0']-1;
                    
break;
            }
        }
        
if(case_num!=1)
            cout
<<endl;
        cout
<<cnt<<endl;
    }
    
    
return 0;
}
posted on 2011-08-29 10:13 lee1r 阅读(378) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:基础/模拟

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理