您的位置:首页 > 编程语言

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

2017-06-16 18:13 357 查看

美团点评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;
}

}


注:这个题目理解容易,编写也容易,就是这个时间降不下来,真正要靠内功去编写的代码,现在只完成实现,测试还是无法通过,需要降低时间复杂度,期待官方解答。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: