关注
举例说明:以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
相关推荐
01-14 16:23
广州商学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招什么时候投? #
5099次浏览 76人参与
# 春节提前走,你用什么理由请假? #
4952次浏览 107人参与
# 春节前,你还在投简历吗? #
7180次浏览 94人参与
# 实习到现在,你最困惑的一个问题 #
1905次浏览 56人参与
# 牛客AI体验站 #
13352次浏览 253人参与
# 牛友的春节生活 #
1659次浏览 56人参与
# 备战春招/暑实,现在应该做什么? #
1662次浏览 53人参与
# 从夯到拉,锐评职场mentor #
1559次浏览 31人参与
# 聊聊Agent开发 #
14451次浏览 363人参与
# 距离春招还有一个月,你现在是什么开局? #
2929次浏览 53人参与
# 推荐一个值得做的AI项目 #
3936次浏览 125人参与
# 暑期实习什么时候投? #
3578次浏览 84人参与
# 实习想申请秋招offer,能不能argue薪资 #
218565次浏览 1171人参与
# 腾讯工作体验 #
566922次浏览 3700人参与
# 哪些瞬间让你真切感受到了工作的乐趣 #
24443次浏览 105人参与
# 通信硬件2024笔试面试经验 #
269161次浏览 2053人参与
# 实习必须要去大厂吗? #
188502次浏览 1767人参与
# 正在春招的你,也参与了去年秋招吗? #
349915次浏览 2590人参与
# 双非本科的出路是什么? #
208704次浏览 1566人参与
# 最难的技术面是哪家公司? #
65407次浏览 971人参与

凡岛公司福利 737人发布