Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Иван Сергеевич
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 53
1

Подсчитать, сколько ошибочных табличек оказалось в бракованной партии

23.10.2012, 19:06. Просмотров 2927. Ответов 24
Метки нет (Все метки)

Я не так давно начал осваивать JAVA читаю главу решаю задачи... Вообщем и на циклах я зациклился)))
Например есть такая задача....
В городе N есть большой склад на котором существует 50000 различных полок. Для удобства работников руководство склада решило заказать для каждой полки табличку с номером от 00001 до 50000 в местной типографии, но когда таблички напечатали, оказалось что печатный станок из-за неисправности не печатал цифру 2, поэтому все таблички, в номерах которых содержалась одна или более двойка (например, 00002 или 20202) — надо перепечатывать. Напишите программу, которая подсчитает сколько всего таких ошибочных табличек оказалось в бракованной партии.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    int a = 500;
        int sum=0;
        int sum2=0;
        int sum3=0;
        int sum4=0;
        int con=0;
        for (int i = 0; i < 500 ; i++){
            sum = i%10;
            sum2 = i/10;
            sum3 = sum2/10;
            sum4 = sum2%10;
            a = i;
                if (sum == 2 || sum3 == 2 || sum4 == 2){
                a = i;
                con++;
                System.out.println(con+" "+a);
                }
            
            }
Этот код решает такую задачу если табличек 500 и расширить до 50000 можно, но я понимаю это полный бред!!! еще он дает результат по кол-ву бракованных таблиц но выглядит это так:
1 2
2 12
3 20
4 21
***
174 472
175 482
176 492 последняя табличка с цифрой 2 это 492, а из 500 их 176 как сделать чтоб количество бракованных табличек показывалось 1 конечной цифрой
2
12
20
21
22
23
***
462
472
482
492
Всего бракованных табличек 176 (типа того)

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

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 19:06
Ответы с готовыми решениями:

Ровный вывод табличек в консоль
Мне нужно вывести ровно друг под другом строки. Вывод должен иметь вид...

Определить вероятность, что при проверке всей партии деталей не будет найдено ни одной бракованной
Здравствуйте, нужна помощь в решении следующей задачи: Есть партия деталей в...

Ввести двумерный массив 4*4, подсчитать кол-во (+) и (-) элементов и вывести статистику по строкам, сколько (+), сколько (-) и подсчитать общую сумму
не получается никак сделать многомерный массив... помогите пожалуйста ...

Сколько присутствовало при встрече женщин, если рукопожатий оказалось 84?
Всем здравствуйте, помогите с задачкой! При встрече в стране Добрых людей...

Сколько ионов натрия из брошенного кристаллика оказалось в этом стакане?
Озеро со средней глубиной 5м и площадью 4км2 «посолили», бросив кристаллик...

24
xiom
0 / 0 / 0
Регистрация: 14.01.2017
Сообщений: 3
24.12.2017, 17:22 21
есть хороший вариант решения через рекурсию:
БРАКОВАННЫЕ ТАБЛИЧКИ

вот эта ссылка - там всё подробно объяснено:
https://youtu.be/UJvsh6tGquw
0
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.12.2017, 23:09 22
xiom, я бы понял тайминг в целый час, если бы там было общее решение, но его нет...
0
xiom
0 / 0 / 0
Регистрация: 14.01.2017
Сообщений: 3
25.12.2017, 16:57 23
КОП, на сарказм отвечаю только сарказмом:
- какая задача (существует 50000 различных полок), такое и решение !!!
- а видео учебное, поясняю для тех "кто не понял тайминг в целый час" - то есть для того, чтобы кто-то учился, поэтому первые полчаса о рекурсии, достоинства и недостатки, левосторонняя и правосторонняя, прямой и обратный ходы рекурсии, потом объяснение решения обсуждаемой задачи, на 53 минуте прямо сказано, что это не универсальное решение и указано "куда думать", чтобы сделать универсальным
- так как видео учебное, то оно и подразумевает, что учащимся нужно оставить поле для размышлений (возможно до следующего видео)
- у меня есть универсальное решение через рекурсию и есть измерения, тут пишу примерно (на скрине см. внизу конкретно): у рекурсивного решения количество строчек кода в 2 раза больше, но время исполнения в 1000 раз меньше для числа полок 199999 (не забываем, что рекурсия ограничена: Maximum call stack size exceeded)

- моё рекурсивное решение работает с таким же ответом как у цикла for (см. решения выше) для всех чисел в диапазоне до переполнения стека (сравнения проведены для числа полок от 0 до 199999)
- итак, если у вас нет общего рекурсивного решения, то пересмотрите видео и возьмите указанный там подход за основу:
Javascript
1
2
3
4
5
6
7
8
    function getResultRec(n) {
        if (n==1) {
            return 1;
        }
        else {
            return 1*(Math.pow(10,n-1)) + 9*getResultRec(n-1);
        }
    }
- конкретно в моём коде эта функция употреблена как базовая так:
Javascript
1
2
3
    function getResult(n) {
        return n<2? n: 1*(Math.pow(10,n-1)) + 9*getResult(n-1);
    }
- но вокруг неё есть и "оболочка" вспомогательного кода (тоже рекурсивного)
- на втором скрине методика испытайний
===
- ваше слово, товарищ Маузер © В.В.Маяковский
0
Миниатюры
Подсчитать, сколько ошибочных табличек оказалось в бракованной партии   Подсчитать, сколько ошибочных табличек оказалось в бракованной партии  
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
25.12.2017, 19:06 24
Цитата Сообщение от xiom Посмотреть сообщение
на сарказм
это была скорее плохо сформулированная критика.

Цитата Сообщение от xiom Посмотреть сообщение
какая задача (существует 50000 различных полок), такое и решение !!!
тогда просто System.out.println("23756");
Но это я утрирую, тут вы в общем правы.

Цитата Сообщение от xiom Посмотреть сообщение
- у меня есть универсальное решение через рекурсию и есть измерения, тут пишу примерно (на скрине см. внизу конкретно): у рекурсивного решения количество строчек кода в 2 раза больше, но время исполнения в 1000 раз меньше для числа полок 199999 (не забываем, что рекурсия ограничена: Maximum call stack size exceeded)
- моё рекурсивное решение работает с таким же ответом как у цикла for (см. решения выше) для всех чисел в диапазоне до переполнения стека (сравнения проведены для числа полок от 0 до 199999)
тут я был разочарован, т.к. грубо говоря треть видео это измерения скорости выполнения, но при этом не упоминается самый простой способ без циклов и рекурсий. Хотя может где-то в видео есть намек мол поищите сами
Java
1
2
3
public static int getResult(int n) {
        return (int)Math.pow(10, n) - (int)Math.pow(9, n);
    }
Цитата Сообщение от xiom Посмотреть сообщение
а видео учебное
главное чтоб целевой аудитории было приятно смотреть, мое мнение лишь капля в море, не принимайте близко к сердцу

Отвергая предлагаю:
рекурсию в отдельное видео, вместо пейнта что угодно, но не пейнт.
0
xiom
0 / 0 / 0
Регистрация: 14.01.2017
Сообщений: 3
25.12.2017, 19:15 25
КОП, спасибо за ответ
Цитата Сообщение от КОП Посмотреть сообщение
не упоминается самый простой способ без циклов и рекурсий
- это было уже четвёртое видео про эту задачу , те кто смотрят - они знают, пятое уже снимать не буду... может быть
- вот ссылка на моё решение: Бракованные таблички
- для спортивного программирования зачастую играет роль не только правильно работающий алгоритм, но и работающий быстро иначе будет TimeLimit и +20 минут штрафа
- спасибо за сотрудничество
0
25.12.2017, 19:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2017, 19:15

Определить, имеются ли в партии из N деталей бракованные. Если да, то подсчитать их количество
Пригодность детали оценивается по размеру В, который должен соответствовать...

Составить программу, которая вычисляет, сколько всего зёрен оказалось на шахматной доске
3. На первую клетку шахматной доски положили 1 зерно, а на каждую следующую...

Определить, сколько надо долить жидкости в каждый из стаканов, чтобы суммарно в них оказалось N мл
При решении задачи не используйте строковых или символьных переменных и циклов....


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

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

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