# 美团点评CodeM编程大赛-题五

来源:互联网 发布:windows 设备管理中心 编辑:程序博客网 时间:2024/05/21 06:33

美团点评CodeM编程大赛-题五

  • 题目描述

    给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。

  • 输入描述:

    一行,两个整数 l 和 r (1 ≤ l ≤ r ≤ 10^9)。

  • 输出描述:

    输出9行。
    第 i 行,输出数码 i 出现的次数。

  • 输入例子:

    1 4

  • 输出例子:

    4
    2
    1
    1
    0
    0
    0
    0
    0

  • 语言

    JAVA JDK1.7

  • 代码
import java.util.Scanner;/** * @ClassName: * @Description: * @Author: Arthur * @Date: 2017/6/16 14:30 * @version: V1.0.0.0 */public class Main{    public static void  main(String[] args){        Scanner sc = new Scanner(System.in);        int min=sc.nextInt();        int max=sc.nextInt();        int[] timesArray=new int[9];        for (int i = min; i <=max ; i++) {            for (int j = 1,k=i/2; j <=k; j++) {                if(i%j==0){                    int index=getFirstNum(j);                    timesArray[index]++;                }            }            int myIndex=getFirstNum(i);            timesArray[myIndex]++;        }        for (int i = 0; i < timesArray.length; i++) {            System.out.println(timesArray[i]);        }    }    //取首位    public static int getFirstNum(int num){        String firstNum= String.valueOf(num).substring(0,1);        return Integer.parseInt(firstNum)-1;    }}

注:这个题目理解容易,编写也容易,就是这个时间降不下来,真正要靠内功去编写的代码,现在只完成实现,测试还是无法通过,需要降低时间复杂度,期待官方解答。

阅读全文
0 0
原创粉丝点击