CSU 1267: Operation(模拟啊 )

来源:互联网 发布:免费工资管理软件 编辑:程序博客网 时间:2024/05/21 18:36

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1267


Description

现在有26个变量,分别用a~z表示,它们的初值均为0。接下来一共有N个操作,这些操作一共分为如下6类:

(1) mov a,b : 将变量b的值赋给a,相当于a = b,其中ab泛指两个变量。

(2) mov a,10 : 10赋给a,相当于a = 10,其中a泛指某个变量,10泛指某个不大于20的正整数。

(3) add a,b : 计算a + b的值并将其赋给变量a,相当于a = a + b,其中ab泛指某两个变量。

(4) sub a,b : 计算a – b的值并将其赋给变量a,相当于a = a – b,其中ab泛指某两个变量。

(5) add a,10 : 计算a + 10的值并将其赋给变量a,相当于a = a + 10,其中a泛指某个变量,10泛指某个不大于20的正整数。

(6) sub a,10 : 计算a – 10的值并将其赋给变量a,相当于a = a – 10,其中a泛指某个变量,10泛指某个不大于20的正整数。

(7) print a : 用一行输出变量a的值,其中a泛指某个变量。

你需要依次执行这N个操作,并且当遇到第(7)类操作时,按要求输出该变量的值。

Input

输入数据的第一行包含一个整数N (1 <= N <= 10^5),表示一共有N个操作。

接下来一共有N行,每行均包含一个形如上述的操作。

Output

对于每个第(7)类操作,用一行输出一个整数,表示该变量的值。

数据保证在运算过程中每个变量的值均不会超过10^9

Sample Input

10print cadd c,10mov a,cadd a,aprint asub a,5sub b,aprint bsub c,bprint c

Sample Output

020-1525

HINT

Source

中南大学第七届大学生程序设计竞赛-热身赛


代码如下:

#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;#include <iostream>#include <string>string ss;int main(){    int n;    int f[27];    char s[10];    while(~scanf("%d",&n))    {        memset(f,0,sizeof(f));        memset(s,0,sizeof(s));        char a, b;        for(int i = 0; i < n; i++)        {            cin>>ss;            if(ss == "print")            {                cin>>a;                printf("%d\n",f[a-'a']);            }            else if(ss == "mov")            {                cin>>a>>b>>s;                if(s[0]>='0' && s[0] <= '9')                {                    int num = 0;                    int len = strlen(s);                    for(int j = 0; j < len; j++)                    {                        num = num*10+s[j]-'0';                    }                    f[a-'a'] = num;                }                else                    f[a-'a'] = f[s[0]-'a'];            }            else if(ss == "add")            {                cin>>a>>b>>s;                if(s[0]>='0' && s[0] <= '9')                {                    int num = 0;                    int len = strlen(s);                    for(int j = 0; j < len; j++)                    {                        num = num*10+s[j]-'0';                    }                    f[a-'a'] += num;                }                else                    f[a-'a'] += f[s[0]-'a'];            }            else if(ss == "sub")            {                cin>>a>>b>>s;                if(s[0]>='0' && s[0] <= '9')                {                    int num = 0;                    int len = strlen(s);                    for(int j = 0; j < len; j++)                    {                        num = num*10+s[j]-'0';                    }                    f[a-'a'] -= num;                }                else                    f[a-'a'] -= f[s[0]-'a'];            }        }    }    return 0;}


1 0
原创粉丝点击