我严重怀疑这代码不是你自己写的,因为感觉你自己都不知道这个代码在干什么事情,注释都错了 不懂请不要装懂误导别人 这个代码的核心思想就是找出各个位数上1的个数,和辗转相除一点关系都没有 重新注释了一下,有兴趣的就看看吧 def NumberOf1Between1AndN_Solution(n):     temp = n     res = 0     base = 1                            # 应该是指位数,1表示个位,10表示十位....     while temp:         p = temp % 10                   # 取出当前位         temp = temp // 10         res += temp * base              # temp * base得到该位的出现次数         if p == 1:             # 如果这个位数是1,那么还要算上这个位数1出现的次数             # 举例: 1141的百位             # 上面temp * base即1 * 100算出的是1000前百位为1的个数,1100到1141百位上的1没统计到,因此最终结果还要加上42个             res += n % base + 1         elif p > 1:             # 如果这个位数大于1,那么这个位数的1还出现了base次             # 举例: 1141的十位             # 上面temp * base即11 * 10算出的是1100前十位为1的个数,1100后还有10个没统计到             res += base         base *= 10     return res
12

相关推荐

最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
牛客网
牛客企业服务