关注
举例说明:以216为例,注意216是一个相当特殊的数字,从1到216这216个数中,个位是1的情况有1 11 21 31 41 51 .... 211 ,(注意这个11,这里虽然出现了两个1,但是下一步固定十位为1的时候会考虑到)这里一共有1~21=21 +1(001种) 也就是216/10+1;然后是十位数,11,12,13,14,15...19;(10个) 110,111,112,113...119;(10个) 210,211,212...216(6+1,加1是因为0到6) 这里我们发现,从1到216这216个数中,固定十位数为1的情况有 10*2+6+1,想到这里,我们应该能够理解为什么需要把216这个数字拆分成a=n/m和b=n%m了,因为我们需要单独考虑210到216这7个数,此时(考虑10位数的时候)除了a/2(其实就是百位数)*10=20以外,还要加上b+1;假如n不是216,而是206,则取不到210到216这7个数,假如n是226,则会取到210到219这10个数,由此可见,只有a的末位为1时才需要考虑取不满m个的情况,故a % 10 == 1时,要加上b+1;再考虑n=226的情况,此时由于可以取到210到219这10个数,所以固定十位数为1的情况有(a/10+1)*10;那n=236呢?也是(a/10+1)*10,接着往后想一直到306,都是30,而316是30+7,据此可以判断,只有0/1是特殊的,在程序实现中这么处理这个特殊呢?可以加一个判断,或者用a+8避免这个判断,之所以是+8,通过上面的分析很明显可以理解,是因为当a的次低位为0或者1时,a/10==(a+8)/10,当a的次低位>=2,补8会产生进位位,效果等同于(a/10+1)
8
相关推荐


腾讯
| 实习
| 超多精选岗位
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试被问“你的缺点是什么?”怎么答 #
5430次浏览 88人参与
# 租房找室友 #
7858次浏览 53人参与
# 水滴春招 #
14986次浏览 170人参与
# 25届秋招公司红黑榜 #
238145次浏览 988人参与
# 入职第四天,心情怎么样 #
11007次浏览 57人参与
# 简历无回复,你会继续海投还是优化再投? #
48537次浏览 560人参与
# 机械人选offer,最看重什么? #
69060次浏览 449人参与
# 牛友们的论文几号送审 #
16003次浏览 500人参与
# 软开人,你觉得应届生多少薪资才算合理? #
81338次浏览 496人参与
# 国企还是互联网,你怎么选? #
109117次浏览 852人参与
# 22届毕业,是读研还是拿外包offer先苟着 #
4640次浏览 27人参与
# 机械人,你的秋招第一份简历被谁挂了 #
125793次浏览 1925人参与
# 总结:哪家公司面试体验感最差 #
33256次浏览 169人参与
# 职场新人生存指南 #
198897次浏览 5499人参与
# 安利/避雷我的专业 #
62082次浏览 481人参与
# 读研or工作,哪个性价比更高? #
26038次浏览 356人参与
# 听劝,这个公司值得去吗 #
382314次浏览 1515人参与
# 参加完秋招的机械人,还参加春招吗? #
26715次浏览 275人参与
# 你觉得早上几点上班合适? #
61659次浏览 256人参与
# 如果重来一次你还会读研吗 #
155662次浏览 1705人参与
# 你们的毕业论文什么进度了 #
900530次浏览 8944人参与