180 条题解
-
0格古洛 LV 7 @ 2007-09-11 20:26:41
wa了n次终于明白
1.括号可以不成对
2.实数计算会产生较大误差不可直接判断 -
02007-09-05 15:19:35@
Accepted 有效得分:100 有效耗时:0ms
可以用解方程的方法做~
多设几个未知数就行了 不会耗太多时间 -
02007-08-26 21:31:43@
为什么数据太大取模就可以解决了?
-
02007-08-25 14:12:52@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms改成extended就过了
呵呵 -
02007-06-09 01:13:52@
代值只需1和2,,而且表达式中有可能出现a^10^10^10^...的.结果很大,,我2话不说,全改extended啦.!!竟然AC!!^0^
-
02007-05-30 10:45:52@
谁能具体说明一下如何进行取模,什么时候取模..
---|---|---|---|---|-
愿C语言能携手P共同发展壮大!各位学C的顶啊!!
NOIP 2007 is coming!
湖北宜昌一中110班 SixplusSeVen
QQ:383025560
blog.sina.com/NoipCenter -
02007-03-04 15:51:46@
*个,我读的时候没看到居然那么多空格
-
02006-11-15 19:27:34@
((6+9)^2-4*6*9)-10)^10^5+(6-6)^10^10^10^10^10 (此为错误选项)
有这样的测试数据.括号不匹配啊!?
((a+6)^2-4*a*6))^10^5+(a-a)^10^10^10^10^10^10 (正确)
这个的括号也不匹配,但是,答案中有它.
这该怎么办??? -
02006-11-03 09:14:46@
标准算法似乎是将每个表达式展开比较是否一致
但是这个题目更适合用特殊值法求解
于是这个题目就转化成表达式求值了,比较猛的算法是标号法,即给算式中的每个符号都标号以记录起优先顺序,+-*/乘方这些按数学运算的优先及定义即可,对于括号应该定义为比所有运算都高的优先及,每次遇到'('则将基数+括号的优先及,这样括号里的符号就是基数加本身的优先及,于是,括号内外就有区别了,括号就可以被剥离,剩下只要按优先级运算即可,这里比较方便的方法我推荐使用链表实现,这样可以比较直观的表达两个数运算后成为一个数的过程,另外就是可以用递归,这里注意是逆向思维,每次寻找优先级最低的符号,多个符号优先级相同则找最右边的(因为正常顺序是从左到右),然后分别递归两边的算式,最后算当前符号,具体实现起来有很多技巧
(Invalid img) -
02006-10-26 07:26:57@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms相当猥琐昂~mod maxlongint就可以了~~
-
02006-10-24 08:53:18@
...似乎除了取模...就只有高精度行得通了:
有这样的数据...
(a -6)^10^10
(2^10^10-(2048^9 *2)-6+a^1)^2^5^2^5int64??Kidding..
-
02006-10-14 10:28:06@
__int64......
-
02006-10-13 23:17:38@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02006-10-10 22:01:36@
似乎很奇怪 MOD 32761过了 MOD 499979 要出错 ??
谁知道这是为什么 加QQ379683913 -
02006-10-22 09:53:22@
取模是不对的,因为有乘方。
一开始没看清题,乘方的计算顺序错了
2^3 mod 3=2
2^(3 mod 3)=1为什么实际上可行?大概是因为数据太弱了吧。
谁知道标准算法是什么。。。 -
02006-09-14 18:32:08@
代值绝对最强!
带入-3---|3绝对可以 -
02006-04-19 20:13:03@
题目要求判断两表达式是否等价,那么只要带入几个值,看其是否相等就行了。如果不等,那么肯定不等价,如果很多个值带入后结果都一样,那么可以认为表达式等价。代入的数可以是自己指定的,也可以是随机的,建议两种都用一下,而且从绝对值较大的值开始试,更容易排除错误。代入数值时可以用递归的方法,但是中间结果可能会很大,只要对一个大数取模就可以解决这个问题。
-
02006-03-13 22:45:48@
用表达式树搞的
竞赛时候才得了30分~~~~~~ -
02006-01-27 17:36:56@
题意很明确:给定两个表达式,判断其是否等价。处理这个问题有两种办法:
(1) 展开。将给定的式子按照多项式运算的规则展开,最后合并同类项,判断两表达式是否相同。这一种方法无疑是严密的,但是对于如下数据:(a+1)^10^10^10,将导致最终项数过多,程序无法在规定时间、空间内出解。
(2) 代值。将数值代入并计算。当然,假如碰巧代入的值使两个多项式值相等,将会造成误判。当然,这是有解决途径的:多次代入不同数值、代入较大数值等等……虽然这个算法并不一定正确,但是随机多次后出错的概率已经可以忽略不计,而且实现又比较简单,不失为一种好办法。要想将值代入,就需要一个表达式求值的过程。表达式求值与人的思维相同,应用了一个递归的过程:每次找出优先级最低的一个符号,将它左边、右边的算式分别进行计算,直到只剩一个数字时返回。这样的代码符合自然思维,实现简单明了,不易出错。
由于计算中出现了次方运算,所以求值过程中需要进行取模运算,这样避免了整数的溢出,保证了最后结果的准确性。 -
02006-01-26 10:03:09@
随机几个x代进去 都相等就看作等价
计算过程中间如果数字太大就模一个大质数了事