题解

180 条题解

  • 0
    @ 2007-09-11 20:26:41

    wa了n次终于明白

    1.括号可以不成对

    2.实数计算会产生较大误差不可直接判断

  • 0
    @ 2007-09-05 15:19:35

    Accepted 有效得分:100 有效耗时:0ms

    可以用解方程的方法做~

    多设几个未知数就行了 不会耗太多时间

  • 0
    @ 2007-08-26 21:31:43

    为什么数据太大取模就可以解决了?

  • 0
    @ 2007-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就过了

    呵呵

  • 0
    @ 2007-06-09 01:13:52

    代值只需1和2,,而且表达式中有可能出现a^10^10^10^...的.结果很大,,我2话不说,全改extended啦.!!竟然AC!!^0^

  • 0
    @ 2007-05-30 10:45:52

    谁能具体说明一下如何进行取模,什么时候取模..

    ---|---|---|---|---|-

    愿C语言能携手P共同发展壮大!各位学C的顶啊!!

    NOIP 2007 is coming!

    湖北宜昌一中110班 SixplusSeVen

    QQ:383025560

    blog.sina.com/NoipCenter

  • 0
    @ 2007-03-04 15:51:46

    *个,我读的时候没看到居然那么多空格

  • 0
    @ 2006-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 (正确)

    这个的括号也不匹配,但是,答案中有它.

    这该怎么办???

  • 0
    @ 2006-11-03 09:14:46

    标准算法似乎是将每个表达式展开比较是否一致

    但是这个题目更适合用特殊值法求解

    于是这个题目就转化成表达式求值了,比较猛的算法是标号法,即给算式中的每个符号都标号以记录起优先顺序,+-*/乘方这些按数学运算的优先及定义即可,对于括号应该定义为比所有运算都高的优先及,每次遇到'('则将基数+括号的优先及,这样括号里的符号就是基数加本身的优先及,于是,括号内外就有区别了,括号就可以被剥离,剩下只要按优先级运算即可,这里比较方便的方法我推荐使用链表实现,这样可以比较直观的表达两个数运算后成为一个数的过程,另外就是可以用递归,这里注意是逆向思维,每次寻找优先级最低的符号,多个符号优先级相同则找最右边的(因为正常顺序是从左到右),然后分别递归两边的算式,最后算当前符号,具体实现起来有很多技巧

    (Invalid img)

  • 0
    @ 2006-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就可以了~~

  • 0
    @ 2006-10-24 08:53:18

    ...似乎除了取模...就只有高精度行得通了:

    有这样的数据...

    (a -6)^10^10

    (2^10^10-(2048^9 *2)-6+a^1)^2^5^2^5

    int64??Kidding..

  • 0
    @ 2006-10-14 10:28:06

    __int64......

  • 0
    @ 2006-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

  • 0
    @ 2006-10-10 22:01:36

    似乎很奇怪 MOD 32761过了 MOD 499979 要出错 ??

    谁知道这是为什么 加QQ379683913

  • 0
    @ 2006-10-22 09:53:22

    取模是不对的,因为有乘方。

    一开始没看清题,乘方的计算顺序错了

    2^3 mod 3=2

    2^(3 mod 3)=1

    为什么实际上可行?大概是因为数据太弱了吧。

    谁知道标准算法是什么。。。

  • 0
    @ 2006-09-14 18:32:08

    代值绝对最强!

    带入-3---|3绝对可以

  • 0
    @ 2006-04-19 20:13:03

    题目要求判断两表达式是否等价,那么只要带入几个值,看其是否相等就行了。如果不等,那么肯定不等价,如果很多个值带入后结果都一样,那么可以认为表达式等价。代入的数可以是自己指定的,也可以是随机的,建议两种都用一下,而且从绝对值较大的值开始试,更容易排除错误。代入数值时可以用递归的方法,但是中间结果可能会很大,只要对一个大数取模就可以解决这个问题。

  • 0
    @ 2006-03-13 22:45:48

    用表达式树搞的

    竞赛时候才得了30分~~~~~~

  • 0
    @ 2006-01-27 17:36:56

    题意很明确:给定两个表达式,判断其是否等价。处理这个问题有两种办法:

      (1) 展开。将给定的式子按照多项式运算的规则展开,最后合并同类项,判断两表达式是否相同。这一种方法无疑是严密的,但是对于如下数据:(a+1)^10^10^10,将导致最终项数过多,程序无法在规定时间、空间内出解。

      (2) 代值。将数值代入并计算。当然,假如碰巧代入的值使两个多项式值相等,将会造成误判。当然,这是有解决途径的:多次代入不同数值、代入较大数值等等……虽然这个算法并不一定正确,但是随机多次后出错的概率已经可以忽略不计,而且实现又比较简单,不失为一种好办法。

      要想将值代入,就需要一个表达式求值的过程。表达式求值与人的思维相同,应用了一个递归的过程:每次找出优先级最低的一个符号,将它左边、右边的算式分别进行计算,直到只剩一个数字时返回。这样的代码符合自然思维,实现简单明了,不易出错。

      由于计算中出现了次方运算,所以求值过程中需要进行取模运算,这样避免了整数的溢出,保证了最后结果的准确性。

  • 0
    @ 2006-01-26 10:03:09

    随机几个x代进去 都相等就看作等价

    计算过程中间如果数字太大就模一个大质数了事

信息

ID
1003
难度
7
分类
字符串 点击显示
标签
递交数
7448
已通过
1564
通过率
21%
被复制
55
上传者