好奇的薯队长

好奇的薯队长

http://www.nowcoder.com/questionTerminal/12b157cfc4ea4a2bacae85d5e177c13c

  1. 从个位开始依次统计每一位有多少个1
  2. 一共有n个数含有个位(必然都有个位),每10个数一个周期,每个周期内有1个1
  3. 一共有n-9个数含有十位(n减去一位数的数量),每100个数一个周期,每个周期内有10个1
  4. 一共有n-9-90个数含有百位,每1000个数一个周期,每个周期内有100个1...

代码如下,有一个问题没想明白,为什么n必须是long?如果用int只能过90%,但是我并没有看出哪里存在溢出问题;哪位兄台能看出问题所在还望不吝指教!

import java.util.*;
public class Main {
    public static void problem15() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            //int n = scanner.nextInt();
            long n = scanner.nextLong();
            long base = 9;
            long num = 1;
            long res = 0;
            while (n > 0) {
                res += (num) * (n / (base+num));
                res += Math.min(num, n % (base+num));
                n -= base;
                num *= 10;
                base *= 10;
            }
            System.out.println(res);
        }
    }

    public static void main(String[] args) {
        problem15();
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务