| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2788 人关注过本帖
标题:2005 noip第四题,等价表达式
只看楼主 加入收藏
zjxtx4431
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-31
收藏
 问题点数:0 回复次数:7 
2005 noip第四题,等价表达式

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

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

这个选择题中的每个表达式都满足下面的性质:

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……
【输入文件】
输入文件equal.in的第一行给出的是题干中的表达式。第二行是一个整数n(2 <= n <= 26),表示选项的个数。后面n行,每行包括一个选项中的表达式。这n个选项的标号分别是A,B,C,D……

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

【输出文件】
输出文件equal.out包括一行,这一行包括一系列选项的标号,表示哪些选项是和题干中的表达式等价的。选项的标号按照字母顺序排列,而且之间没有空格。
【样例输入】

( 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%的数据,表达式中只可能出现两种运算符‘+’和‘-’;

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

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

我先想到用代入特殊值的方法,看解题分析也是代特殊数字,可是辛辛苦苦写出程序后,发现有的式子大的吓人,若要判断结果,要用到高精度算法,可按比赛时间看,基本没可能在充足的时间内写出包括除法幂运算在内的高精度算法.
不才,请教各位

测试数据已经提供(有的测试数据居然括号还不对称,对我来说太bt了)

mjLKKrXu.rar (4.68 KB) 2005 noip第四题,等价表达式


[此贴子已经被作者于2007-8-31 23:35:29编辑过]

搜索更多相关主题的帖子: noip 计算机 代数 等价 表达 
2007-08-31 21:59
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 

可以考虑用一个具体的数去代替'a'然后求值.


清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-08-31 22:41
zjxtx4431
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-31
收藏
得分:0 

大哥看看我红字写的东西吧...

2007-08-31 22:45
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 

那你不能找一个数令你要的第一个表达式的值在较小的范围内....


清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-08-31 23:01
zjxtx4431
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-31
收藏
得分:0 
9999^9^9-9^9^9*1111^9^9-(1-a^8)*(1+a^8) +9
这是我随意摘的一个数据...........
2007-08-31 23:17
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 

这是提高组的..难
有两种思路:
1.化简:超级大牛可以将表达式化成最简按次序表达式,然后比较,出解
2.代数,不用带大数据,例如代入1.003这样一个小数就可以出解(使用long double类型,保证小数精确度)


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-09-01 09:15
zjxtx4431
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-31
收藏
得分:0 

恩,最后我代很小的数字再用字符串判断前7位的方法完成了,谢谢

2007-09-01 12:52
未来打开心
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-3-8
收藏
得分:0 
2014-03-08 16:20
快速回复:2005 noip第四题,等价表达式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018603 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved