Callisto学习C语言

Time Limit
1s
Memory Limit
262144KB
Judge Program
Standard
Ratio(Solve/Submit)
15.09%(8/53)
Description:

Callisto是全球某工商大学的大一新生,在学习c语言的过程中遇到了一道逆天题目:请问 "i = i++ + ++i * i++ - i + ++i;" 的结果是什么?

Callisto查阅资料后发现,这是一种未定义行为(undefined behavior),即C语言标准委员会不规定这样的代码应该如何处理,它可能是任何结果。在编译器发现这种代码时,即便它选择清空你的硬盘,也是符合c语言标准的。

具体而言,如果在为某个变量赋值时,右侧表达式试图修改这个变量本身,即构成了未定义行为。如 "i = i++; y = 3 + y++;" 都是未定义行为,而 "i = a + b;" "i = ++i;" 则不是。

注意左自增并不构成未定义行为。


现在期末考试卷上出现了 $n$道题目,每道题都是一条赋值语句,Callisto想请你写一个编译程序来判断这些语句是否包含未定义行为,如果包含,你需要输出 "Wrong Answer" ~~并格掉出题人的硬盘~~,否则输出 "Accept"。

题目保证:

  • 所有语句形式为规范的 "变量名 = 表达式;",不包含未定义行为以外的其他语法错误;
  • 表达式中仅会出现数字,变量,"+" 和 "++" 运算符(样例中均已包含);
  • 所有变量名都为单个小写字母;
  • 表达式的每一个相加的部分和加号之间用空格分隔,等号两边有空格。


Input:

第一行包含一个正整数$ n (1 \le n \le 100)$,表示语句个数;

接下来 $n$ 行,每行包含一个字符串 $s(6 \le |s| \le 1000)$,为待判断的语句。

Output:

对于每条语句,如果包含未定义行为则输出 "Wrong Answer",否则输出 "Accept"(不包含引号)。

Sample Input:
4
i = i++;
j = 1;
x = 2 + c + ++x;
m = 34 + k;
Sample Output:
Wrong Answer
Accept
Accept
Accept
Hint:

如果用getchar()读取换行符有误,请尝试使用gets()函数读取换行符。


Submit