清华大学07年复试上机题题解

第一题,质因数分解问题

由于数据规模不大,所以完全可以使用试除法,从2开始,每次找到一个因子后,nt /= i,并把试除起点重新设置为2,这样可以保证所有找到的因子不可能为合数.因此还避免了素数判定。

第二题,大数的二进制十进制互相转换

本题包括的两个子问题如下:

1.十进制大数串转换为二进制的问题,实际上是大数除以一个int型数据的问题,这比大数除大数的除法要简单得多,可以直接使用小学时学过的试除法,

即从高位开始,每位除以2,当然,要记得加上上一次除剩下来的结果。

2.二进制串转换为十进制。由于是大数,这里求2的幂的次数非常高,我的做法便是使用类似于求任意位阶乘的方法求出2的任意次幂,然后再用大数加法。这种做法是最原始的,但由于数学知识有限,只能如此了。

第三题,邮票面值问题

这个实际上是经典的0-1背包问题,状态转移方程基本上可以不做任何修改。

不过有个值得注意的问题是:

对于背包问题,如果只求最优解,而无需要恰好装满背包,则把全部初始化为0。

若要求刚好装满背包,则需要做如下初始化:

这种差别很微妙,需要认真体会一下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值