Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
1455 / 921 / 807
Регистрация: 30.04.2016
Сообщений: 3,139
1

Оптимизация кода (подсчет числа цифр 1-9 в последовательности)

15.02.2019, 11:08. Просмотров 252. Ответов 6
Метки нет (Все метки)

Здравтсвуйте! Помогите, пожалуйста, оптимизировать код. В одном тесте - TLE.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
import java.util.Arrays;
 
    class Dcoder {
 
    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);    
    int n = -1; 
    int[] count = new int[9];
    Arrays.fill(count, 0);  
    for (int i = 0; i < 100000; i++) {
        n = in.nextInt();
        if (n == 0) {
            break;
        }
        count[n-1]++;
    }
    for (int i = 0; i < 9; i++) {
        System.out.printf("%d ", count[i]);
    }
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2019, 11:08
Ответы с готовыми решениями:

Оптимизация кода (сумма цифр 3х-значного числа)
На вход программы поступает целое трёхзначное число. Напишите программу, которая выводит сумму цифр...

Подсчет цифр в последовательности
Добрый вечер, в с++ я не селен, поэтому обращаюсь к вам. Нужно написать программу подсчета цифр в...

Подсчет цифр в последовательности
Здравствуйте. Задача такая: Дана последовательность натуральных чисел от 1 до n. Написать...

Подсчет числа четных цифр, используемых в написании N-значного числа М (функции)
Добрый день. помогите решить задачку пжалуйста. Заранее благодарен

6
2557 / 2210 / 670
Регистрация: 05.07.2013
Сообщений: 10,665
15.02.2019, 11:26 2
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Arrays.fill(count, 0);
Скрипач не нужен, родной.
Цитата Сообщение от Fixer_84 Посмотреть сообщение
if (n == 0) {
* * * * * * break;
* * * * }
вместо for можно сделать while, мне кажется
Цитата Сообщение от Fixer_84 Посмотреть сообщение
for (int i = 0; i < 9; i++) {
* * * * System.out.printf("%d ", count[i]);
* * }
sout(Arrays.toString())
Цитата Сообщение от Fixer_84 Посмотреть сообщение
int n = -1;
инициализировать тоже не нужно, можно вообще объявить переменную n внутри цикла
1
1455 / 921 / 807
Регистрация: 30.04.2016
Сообщений: 3,139
15.02.2019, 11:38  [ТС] 3
xoraxax, спасибо за ваш ответ. Я java недавно изучаю. Можете, пожалуйста, написать код, который оптимизирует программу? Скорее всего дело в потоке ввода. Не подскажите как этот ввод сделать быстрее?

Добавлено через 4 минуты
xoraxax, там на сайте говорят, что
Код
StreamTokenizer
почти в 10 раз быстрее. Как его можно использовать в этой программе?
0
2557 / 2210 / 670
Регистрация: 05.07.2013
Сообщений: 10,665
15.02.2019, 11:42 4
http://tutorials.jenkov.com/ja... nizer.html
1
1457 / 1158 / 285
Регистрация: 17.02.2014
Сообщений: 6,243
15.02.2019, 11:57 5
Fixer_84, зачем тебе быстрее, если ты вводишь руками in.nextInt();
0
1455 / 921 / 807
Регистрация: 30.04.2016
Сообщений: 3,139
15.02.2019, 13:34  [ТС] 6
xoraxax, спасибо. Получилось оптимизировать. Все тесты пройдены. Вот код, если вам интересно:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Arrays;
 
class Dcoder {
 
  public static void main(String[] args) throws IOException {
    
    StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    int n; 
    int[] count = new int[9];
    Arrays.fill(count, 0);  
    while (st.nextToken() != 0) {
        n = (int)st.nval;
        if (n == 0) {
            break;
        }
        count[n-1]++;
    }
    for (int i = 0; i < 9; i++) {
        System.out.printf("%d ", count[i]);
    }
}
}
0
1457 / 1158 / 285
Регистрация: 17.02.2014
Сообщений: 6,243
15.02.2019, 14:22 7
Цитата Сообщение от Fixer_84 Посмотреть сообщение
спасибо
не забываем жмакать "+1", как минимум!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2019, 14:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Подсчет числа четных цифр, используемых в записи N-значного числа M
Решить задачу с помощью процедур и функций. Написать программу подсчета числа четных цифр,...

Подсчет количества цифр числа + приближение числа Пи ф-лой Борвейна
Уважаемые форумчане, была бы очень признательна, если бы кто-нибудь мне помог определить, что я...

Для каждого числа последовательности вычислить количество его цифр и сумму этих цифр

Найти все простые числа, оптимизация кода
Добрый день! Написал такой код: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.