• COJ 0802 非传统题(二)


    (颓了这么多天是时候干点正事了QAQ)

    非传统题(二)
    难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
    试题描述

    还是很久很久以前,chx丢失了一段程序,然而就在今天,他找到了这段程序!!!

    但是很可惜因为刚刚经历了中考,智商被降为0,因此他不会读这段程序了,只是隐约知道这段程序好像是c++程序,现在请你来帮忙翻译给chx听并通过测试数据~

    当然了,chx是不会让你写一个dev c++的啦,你要实现的功能请看其他说明。

    输入
    呵呵
    输出
    呵呵
    输入示例
    样例1:
    #include<iostream>
    using namespace std;
    int main()
    {
        int a,b;
        cin>>a;
        cin>>b;
        cout<<a+b;
    }

    样例2:
    #include<iostream>
    using namespace std;
    int main()
    {
        int a;
        cin>>a;
        cin>>b;
        cout<<a+b;
    }
    输出示例
    样例1:
    如果萌萌哒测评机给了你3,4,那么你就要输出7
    如果萌萌哒测评机给了你2,6,那么你就要输出8

    样例2:
    compile error!
    其他说明
    本题采用特殊评测Special Judge,测评机将会贴心的为你准备好你要cin的数据,所以当你识别到cin语句的时候请大胆的cin吧!具体请看样例输出。

    接下来为了简化题目,做如下规定:
    第一行只会是#include<iostream>,保证这个头文件是足够用的,不会出现奇怪的库函数编译错误。
    第二行只会是using namespace std;这就保证了在调用swap等函数时不需要加"std::",(不过本题中用不到)
    第三行只会是int main(),不会传参数。
    第四行只会是{,不会像chx一样缩行到int main那一行的。
    接下来便是核心代码们,每一行会有四个格的缩进
    对于核心代码,只有这样几种操作:
    int <名称>;表示申请一个变量。不会出现 int a,b;这样的语句,一定是分两行的int操作。
    如果在一个程序中int同一个变量多次,你需要报错(后面会讲到)
    为了摆脱恶心的字符串技术,chx保证变量是一个合法的char字符。
    cin>><名称>;输入指令。后面是变量名。如果没有这个变量,请抛出异常。
    同样地,不会出现cin>>a>>b;之类的命令,一定是分开的两个cin且不在同一行。
    cout<<<运算符>;一看这个就比较恶心。输出命令后面紧接着是一个简单运算符,只可能是一个变量名或者是变量名+运算符+变量名。其中运算符只可能是加减乘除中的一个,即(+,-,*,/),命令合法,不会除以0。同样地,你只需要按int运算即可。同时,如果出现没有定义的变量参与运算,你需要抛出异常。依然保证不会出现cout<<a<<b;
    其他命令保证不会出现,比如return 0;
    最后一行一定是"}"表示程序的结束。
    抛出异常:你只需要即刻终止程序然后输出compile error!即可

    题解:简单的表达式处理,为"未来程序·改"做准备吧QAQ

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<queue>
     6 #include<cstring>
     7 #define PAU putchar(' ')
     8 #define ENT putchar('
    ')
     9 using namespace std;
    10 const int maxn=10000+10;
    11 //int 0 ,+ 1,- , cout<< 5,cin>> 6,
    12 bool i[1000];int a[maxn];
    13 void getl(){char ch=getchar();while(ch!='
    ') ch=getchar();return;}
    14 void p(int t){while(t--)getchar();return;}
    15 char ch;
    16 void pass(){while(ch==' '||ch=='
    ') ch=getchar();return;}
    17 inline int read(){
    18     int x=0,sig=1;char ch=getchar();
    19     while(!isdigit(ch)){if(ch=='-')sig=-1;ch=getchar();}
    20     while(isdigit(ch))x=10*x+ch-'0',ch=getchar();
    21     return x*=sig;
    22 }
    23 inline void write(int x){
    24     if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x;
    25     int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;
    26     for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return;
    27 }
    28 void init(){
    29     getl();getl();getl();getl();
    30     static char cal[maxn];ch=getchar();
    31     while(ch!='}'){
    32         pass();
    33         if(ch=='i'){
    34             p(3);ch=getchar();
    35             if(i[ch]){puts("compile error!");return;}
    36             i[(int)ch]=true;p(1);
    37         }
    38         else if(ch=='c'){
    39             ch=getchar();
    40             if(ch=='i'){
    41                 p(3);ch=getchar();
    42                 if(!i[ch]){puts("compile error!");return;}
    43                 //cin>>a[ch];pass();
    44                 a[ch]=read();pass();
    45                 p(2);
    46             }
    47             else{
    48                 p(4);ch=getchar();
    49                 if(!i[ch]){puts("compile error!");return;}
    50                 int tmp=a[ch];
    51                 char cal=getchar();
    52                 if(cal==';') write(tmp);
    53                 else{
    54                     ch=getchar();
    55                     if(!i[ch]){puts("compile error!");return;}
    56                     int e=a[ch];
    57                     if(cal=='+') write(tmp+e);
    58                     else if(cal=='-') write(tmp-e);
    59                     else if(cal=='*') write(tmp*e);
    60                     else write(tmp/e);
    61                     p(2);
    62                 }
    63             }
    64         } pass();if(ch=='}')return;ch=getchar();
    65     }
    66     return;
    67 }
    68 void work(){
    69     return;
    70 }
    71 void print(){
    72     return;
    73 }
    74 int main(){init();work();print();return 0;}
  • 相关阅读:
    Java内存回收
    Android四大基本组件介绍与生命周期
    JAVA中获取当前系统时间
    jquery如何判断元素是否被点击_百度知道
    css控制div显示/隐藏方法及2种方法比较原码
    点击图标不断震动效果
    jquery 如何动态添加、删除class样式方法介绍_jquery_脚本之家
    HTML5绘制矩形和圆形并且还有获取在这个图层内的坐标的思路和代码
    Attribute name invalid for tag form according to TLD异常解决办法_gaigai_百度空间
    html5绘图
  • 原文地址:https://www.cnblogs.com/chxer/p/4628401.html
Copyright © 2020-2023  润新知