首页 > 试题广场 >

好奇的薯队长

[编程题]好奇的薯队长
  • 热度指数:3100 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
薯队长在平时工作中需要经常跟数字打交道,某一天薯队长收到了一个满是数字的表格,薯队长注意到这些数字里边很多数字都包含1,比如101里边包含两个1,616里包含一个1。
请你设计一个程序帮薯队长计算任意一个正整数n(0<n<=2147483647),从1到n(包括n)的所有整数数字里含有多少个1。

输入描述:
正整数n(0<n<=2147483647)


输出描述:
从1到n(包括n)的所有整数数字里含有多少个1
示例1

输入

1

输出

1
示例2

输入

13

输出

6

说明

从1到13(包括13)有13个数字,其中包含1的数字有1,10,11,12,13,这些数字里分别有1,1,2,1,1个1,所以从1到13(包括13)的整数数字中一共有1+1+2+1+1=6个1
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
          System.out.println("n:");
         int n = sc.nextInt();
          int ret1 = returnOf(n);
            if(ret1 != -1){
            System.out .println(ret1);
            }
        }
        public static int returnOf (int n){
            int ret = 0;
            if(n <= 0 || n >2147483647 ){
                System.out.println("输入超出范围,重新输入!");
                ret = -1;
                return ret;
            }
       
            for(int i = 1; i <= n;i++){
                String newn = String.valueOf(i);
                int L=newn.length();
                for(int j = 0;j < L;j++){
                    int digit = newn.charAt(j)-'0';
                    if(digit == 1){
                        ret++;
                    }
                }
            }
            return ret;
        }
 }

求大神解答,哪里出错了,编译不过
发表于 2019-05-23 15:50:19 回复(0)