(颓了这么多天是时候干点正事了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

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>
#include<cstring>
#define PAU putchar(' ')
#define ENT putchar('\n')
using namespace std;
const int maxn=+;
//int 0 ,+ 1,- , cout<< 5,cin>> 6,
bool i[];int a[maxn];
void getl(){char ch=getchar();while(ch!='\n') ch=getchar();return;}
void p(int t){while(t--)getchar();return;}
char ch;
void pass(){while(ch==' '||ch=='\n') ch=getchar();return;}
inline int read(){
int x=,sig=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')sig=-;ch=getchar();}
while(isdigit(ch))x=*x+ch-'',ch=getchar();
return x*=sig;
}
inline void write(int x){
if(x==){putchar('');return;}if(x<)putchar('-'),x=-x;
int len=,buf[];while(x)buf[len++]=x%,x/=;
for(int i=len-;i>=;i--)putchar(buf[i]+'');return;
}
void init(){
getl();getl();getl();getl();
static char cal[maxn];ch=getchar();
while(ch!='}'){
pass();
if(ch=='i'){
p();ch=getchar();
if(i[ch]){puts("compile error!");return;}
i[(int)ch]=true;p();
}
else if(ch=='c'){
ch=getchar();
if(ch=='i'){
p();ch=getchar();
if(!i[ch]){puts("compile error!");return;}
//cin>>a[ch];pass();
a[ch]=read();pass();
p();
}
else{
p();ch=getchar();
if(!i[ch]){puts("compile error!");return;}
int tmp=a[ch];
char cal=getchar();
if(cal==';') write(tmp);
else{
ch=getchar();
if(!i[ch]){puts("compile error!");return;}
int e=a[ch];
if(cal=='+') write(tmp+e);
else if(cal=='-') write(tmp-e);
else if(cal=='*') write(tmp*e);
else write(tmp/e);
p();
}
}
} pass();if(ch=='}')return;ch=getchar();
}
return;
}
void work(){
return;
}
void print(){
return;
}
int main(){init();work();print();return ;}

COJ 0802 非传统题(二)的更多相关文章

  1. COJ 0801 非传统题(一)

    非传统题(一) 难度级别:A: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 大家好!我是COJ第一道非传统题,是不是感觉非常的excite ...

  2. 非传统题【A002】

    [A002]非传统题[难度A]————————————————————————————————————————————————————————————————————————————————————— ...

  3. 【JavaScript】Leetcode每日一题-二叉搜索树的范围和

    [JavaScript]Leetcode每日一题-二叉搜索树的范围和 [题目描述] 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和. 示例1: 输入: ...

  4. 【python】Leetcode每日一题-二叉搜索树节点最小距离

    [python]Leetcode每日一题-二叉搜索树节点最小距离 [题目描述] 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 示例1: 输入:root = [4 ...

  5. 【python】Leetcode每日一题-二叉搜索迭代器

    [python]Leetcode每日一题-二叉搜索迭代器 [题目描述] 实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(T ...

  6. 《剑指Offer》题二十一~题三十

    二十一.调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 测试用例: 功能测试:输入数组中的奇 ...

  7. 《剑指Offer》题十一~题二十

    十一.旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组{3, 4, 5, 1, 2}为{ ...

  8. HDU——1005Number Sequence(模版题 二维矩阵快速幂+操作符重载)

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  9. [LC]235题 二叉搜索树的最近公共祖先 (树)(递归)

    ①题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先 ...

随机推荐

  1. web前端面试试题总结---javascript篇

    JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...

  2. JAVA设计模式(09):结构型-代理模式(Proxy)

    代理模式是经常使用的结构型设计模式之中的一个,当无法直接訪问某个对象或訪问某个对象存在困难时能够通过一个代理对象来间接訪问,为了保证client使用的透明性,所訪问的真实对象与代理对象须要实现同样的接 ...

  3. Mysql + keepalived 实现双主热备读写分离【转】

    Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论   架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12 ...

  4. 百度——LBS.云 v2.0——创建自己的地理云数据

    随着云技术和地理信息(GIS)技术的发展,今年终于进入了.地理分享的新纪元.百度提供了LBS的云存储.真是个不错的功能.下面让我们来看看如何使用吧. 1.注册百度开发者账号(此处略去88个字) 2.创 ...

  5. 《网络编程》先进 I/O

    这部分是高级插座 I/O . 设置套接字超时报警,使用更方便的数据传输功能. 套接字 I/O 设置操作超时有三种方法: 转让 alarm 性能,制作时,它指定超时 SIGALRM 信号: 在 sele ...

  6. SVN经常使用命令说明

    SVN版本号:1.5 及更新版本号 名词说明: WC:Working Copy 你的工作区 Versioned:受控的:受版本号控制的 SVN是什么? SVN是开源的版本号控制系统. 比CVS很多其它 ...

  7. C文件读写函数介绍(转)

    1.fopen() fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此 ...

  8. 大数据笔记05:大数据之Hadoop的HDFS(数据管理策略)

            HDFS中数据管理与容错 1.数据块的放置       每个数据块3个副本,就像上面的数据库A一样,这是因为数据在传输过程中任何一个节点都有可能出现故障(没有办法,廉价机器就是这样的) ...

  9. linux查询当前进程数的命令

    $command = "ps aux | grep  'zb_insure/get_order_info_from_queue.php' | grep -v 'grep' |  grep - ...

  10. Shell中的${},##和%%的使用

    假设我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值: ${file#*/}:删掉第一个/ 及其左边的字符串:dir1/di ...