(颓了这么多天是时候干点正事了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. Eclipse ADT的Custom debug keystore所需证书规格

    最近开始研究Google Play的In-app Billing IAB内置计费API,发现一个比较烦人的问题就是测试时应用必须经过正式签名,而默认Eclipse ADT调试运行使用的是临时生成的De ...

  2. 【基础练习】【vector】codevs3393 序列倒置

    版权信息 转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看 题目非常easy,本质还是练习一下vector 题目描写叙述 Descriptio ...

  3. 工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat

    对常见的几个函数,周末没事写写,绝对是笔试面试中非频繁,前面n届学长无数次强调了,大家就别怀疑了.从今天开始,每天10道题. int atoi(const char* str) { if(str==N ...

  4. 通过分析 JDK 源代码研究 Hash 存储机制--转载

    通过 HashMap.HashSet 的源代码分析其 Hash 存储机制 集合和引用 就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java 对象放入数组中,只是把对象 ...

  5. 《UNIX网络编程》之select IO

    select 函数的原理 select 管理者 用select来管理多个IO 一旦其中的一个或者多个IO检测到我们所感兴趣的事件, select 函数返回,返回值为检测到的事件个数 然后,遍历事件,进 ...

  6. 二叉树(二叉链表实现)JAVA代码

      publicclassTest{       publicstaticvoid main(String[] args){           char[] ch =newchar[]{'A','B ...

  7. Managing linux Shell Jobs

    Managing Shell Jobs   When moving jobs between the foreground and background, it may be useful to ha ...

  8. Java多线程——线程同步

    在之前,已经学习到了线程的创建和状态控制,但是每个线程之间几乎都没有什么太大的联系.可是有的时候,可能存在多个线程多同一个数据进行操作,这样,可能就会引用各种奇怪的问题.现在就来学习多线程对数据访问的 ...

  9. SpringMVC04controller中定义多个方法

    public class MyController extends MultiActionController { // 新增 方法修饰符要是public public ModelAndView ad ...

  10. php按址传递bug

    foreach ($product_info as $key=>&$value){            $value['bookCity'][]=array(              ...