PAT1009以及PAT1010

1009没能AC,差一个点没过。
= =
难受,好久不刷题了,手生的很。
想法是做多项式乘法时,将结合后的指数和之前已存在的指数相比较,若存在则把系数相加。
为了提升效率,而且数据本身就按指数降序排序,所以就想把计算后的指数也按降序排序,然后比较指数是否已存在时,就可以二分查找了。
可惜写起来手很生,二分时while开始的判断条件都写错了。
很难受。
人生最痛苦的是甚至不如昨日的自己。
而且始终没有查出来为什么有一个点过不了。唉。

1010也没能AC,两个点。
= =
开始有一点没有想到:
假设一个数是1a,那么这个数理应不能按二进制算,自然不能转成十进制,不然会出现:
1a=10+1*2=12
这样就1a=12 yes了,然而十一进制之前,都是不合理的,实际上,十一进制到三十六进制之间所有转换,都不能使得1a=12
解决了这一点后,还有大概四五个点不过。
这就很诡异了,按理说思路没有缺陷了?
查了其他人的答案才发现,题目有误导性,a~z是10-35,但也有可能三十六以上的进制转换,可以使得n1=n2。
所以具体多少进制,考虑到进制数越高,转换为十进制后应该越大,所以将原程序的上限提高到360进制后,还有两个点没过。
真正能AC的算法,应该是要想办法找到一个足够高的进制,然后二分。
已经在课题组呆到八点半了,该回家啦。

悲伤的一天。
不太想刷pat题库了,许多数据设置的太精巧,但纠错时太痛苦,而且我也不是十七八岁的时候了,大把的时间。
更不必说,许多题目有误导性,更甚至题目描述有错误。
考虑去刷LeetCode。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值