题目名称 113. [NOIP 2005]等价表达式
输入输出 equal.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarBYVoid 于2008-09-17加入
开放分组 全部用户
提交状态
分类标签
线性结构 NOIP/CSP 高精度
分享题解
通过:111, 提交:445, 通过率:24.94%
GravatarRapiz 100 0.000 s 0.00 MiB C++
Gravatarlingyixiaoyao 100 0.002 s 0.79 MiB C++
Gravatar刷刷题 100 0.003 s 0.17 MiB Pascal
GravatarGDFRWMY 100 0.003 s 0.25 MiB Pascal
Gravatar风起时 100 0.003 s 0.27 MiB Pascal
Gravatarlcysb 100 0.003 s 0.27 MiB C++
Gravatarlushan01 100 0.003 s 0.29 MiB C++
Gravatarlushan01 100 0.003 s 0.29 MiB C++
GravatarrpCardinal 100 0.003 s 0.29 MiB C++
GravatarHouJikan 100 0.003 s 0.31 MiB C++
本题关联比赛
皇后
暑假综合模拟2
关于 等价表达式 的近10条评论(全部评论)
还没打题解
马上送到好了
总的来说还是需要一定随机应变的能力呀
Gravatar冷月星云
2021-11-25 18:31 14楼
五百次测试+两次不等才判错+随机a与模数之后终于过了 QAQ
这题是真毒瘤
Gravatarrainy
2018-08-04 20:15 13楼
教训就是:没事不要瞎取模!
GravatarShirry
2017-10-25 20:07 12楼
这题哪里有坑?……什么找模数完全不懂。
GravatarRapiz
2016-10-22 00:18 11楼
强行安利一个 -> http://sxysxy.org/blogs/33
Gravatarsxysxy
2016-09-10 23:35 10楼
mdzz坑点真多,一个是表达式里面的空格要处理好,另一个是,两个表达式对MOD取膜结果可能刚好相差MOD,所以应该两边表达式的值都+MOD后再%MOD判断是否相等这才是稳妥的。好慌啊,第一次空格没处理好只get了30分,第二次%出问题了只get了70分。。。看来是noip要爆零的意思了。
Gravatarsxysxy
2016-09-10 23:17 9楼
精度问题简直诡异,本来用unsigned long long加mod一个数的方法死活过不了,然后改成long long加mod一个数就过了
Gravatardevil
2015-09-14 18:15 8楼
找数找了好久
Gravatarmikumikumi
2015-06-26 20:19 7楼
终于写出来了,上面尝试120次的大神太残暴了。。。。
Gravatarslyrabbit
2014-09-20 19:45 6楼
这种恶心人的题,去死吧。。。
实在写不下去了,借用的某位大神的代码,ORZ。。。
GravatarGDFRWMY
2013-10-09 17:48 5楼

113. [NOIP 2005]等价表达式

★★☆   输入文件:equal.in   输出文件:equal.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

明明进了中学之后,学到了代数表达式。有一天,他碰到一个很麻烦的选择题。这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数表达式是和题干中的表达式等价的。

这个题目手算很麻烦,因为明明对计算机编程很感兴趣,所以他想是不是可以用计算机来解决这个问题。假设你是明明,能完成这个任务吗?

这个选择题中的每个表达式都满足下面的性质:
  1. 表达式只可能包含一个变量‘a’。
  2. 表达式中出现的数都是正整数,而且都小于10000。
  3. 表达式中可以包括四种运算‘+’(加),‘-’(减),‘*’(乘),‘^’(乘幂),以及小括号‘(’,‘)’。小括号的优先级最高,其次是‘^’,然 后是‘*’,最后是‘+’和‘-’。‘+’和‘-’的优先级是相同的。相同优先级的运算从左到右进行。(注意:运算符‘+’,‘-’,‘*’,‘^’以及 小括号‘(’,‘)’都是英文字符)
  4. 幂指数只可能是1到10之间的正整数(包括1和10)。
  5. 表达式内部,头部或者尾部都可能有一些多余的空格。
下面是一些合理的表达式的例子:
((a^1) ^ 2)^3,a*a+a-a,((a+a)),9999+(a-a)*a,1 + (a -1)^3,1^10^9……

【输入文件】

输入的第一行给出的是题干中的表达式。第二行是一个整数 n ( 2 <= n <= 26 ),表示选项的个数。后面 n 行,每行包括一个选项中的表达式。这 n 个选项的标号分别是 A , B , C , D ……

输入中的表达式的长度都不超过 50 个字符,而且保证选项中总有表达式和题干中的表达式是等价的。

【输出文件】

输出包括一行,这一行包括一系列选项的标号,表示哪些选项是和题干中的表达式等价的。

选项的标号按照字母顺序排列,而且之间没有空格。

【输入样例】

( a + 1) ^2
3
(a-1)^2+4*a
a + 1+ a
a^2 + 2 * a * 1 + 1^2 + 10 -10 +a -a

【输出样例】

AC

【数据规模】

对于30%的数据,表达式中只可能出现两种运算符‘+’和‘-’;

对于其它的数据,四种运算符‘+’,‘-’,‘*’,‘^’在表达式中都可能出现。

对于全部的数据,表达式中都可能出现小括号‘(’和‘)’。