|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.07.2012, 21:19 | #1 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Последняя ненулевая цифра N!
День добрый, господа! Прошу помощи при решении одной задачи (моё решение валится на 9 тесте, а попытки избавиться от ошибки не дали ожидаемого результата). Итак условие :
Требуется найти последнюю ненулевую цифру числа N! = 1*2*3*…*N. Входные данные Входной файл INPUT.TXT содержит единственное натуральное число N (N<=9999). Выходные данные В выходной файл OUTPUT.TXT выведите ответ на задачу. Так же прилагается ссыль Моё решение : Код:
P.P.S. решаю только для себя, сдавать мне не надо, время не ограничено, но Вы сами понимаете, что нектропостингом заниматься не хочется.... P.P.P.S. и был бы ОЧЕНЬ признателен если бы Вы указали мою ошибку (уж не сочтите за наглость, я понимаю что разбираться в чужом коде не всегда приятно(мягко сказано), т.к. есть планы становиться Программистом (я бы даже сказал мечты), не буду умным, но хоть на своих ошибках поучусь!) Заранее огромное спасибо!!! Последний раз редактировалось Poma][a; 05.07.2012 в 21:23. |
05.07.2012, 22:23 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,289
|
В общем, вот такое решение прошло:
Код:
Но если оставлять только 1 цифру, то ошибка возникает точно. Например: 112 112*15=1680 (последняя 8) 2*15=30 (последняя 3)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
06.07.2012, 00:51 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,306
|
Я вот как подумал.
При вычислении произведения (факториала) число двоек в перемножаемых числах будет больше числа пятерок. А произведение этих чисел (двоек и пятерок) порождает нули справа. Если исключить такие перемножения, то результат можно достичь следующим способом: Код:
Как-то так, ...
|
06.07.2012, 01:47 | #4 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Решение потёр, т.к. оно такое же как у BDA
Последний раз редактировалось eoln; 06.07.2012 в 10:33. |
06.07.2012, 09:53 | #5 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
1. определим функцию f(x) -последняя ненулевая цифра числа x 2. можно утверждать f(a*b) =f( f(a)*f(b) ) к примеру f(20) =f(2*10) =f(f(2) *f(10)) =f(2*1)=f(2)=2 3. введем обозначения m -число цифр в 10-ой записи числа n. ( m<=log10(n) ) k -последняя цифра в записи числа n. (0<=k<=9) 4. тогда f(n!) =f ( f(8**m) * f(k!) ) при желании можно еще раз применить правило 2. немного программирования считаем f(8**m) Код:
считаем f(k!) Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 06.07.2012 в 09:59. |
|
06.07.2012, 11:00 | #6 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,306
|
Прекрасно. Мне нравится.
Это и к вопросу о том, нужна ли математика в программировании Возьму на заметку. Цитата:
Как-то так, ...
Последний раз редактировалось ViktorR; 06.07.2012 в 11:03. |
|
06.07.2012, 12:23 | #7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
а если еще чуть математики, то и компьютер становится почти не нужен!
f(8**1) = 8 f(8**2) = (6)4 =8*8 f(8**3) = (3)2 =4*8 f(8**4) =(1)6 =2*8 f(8**5) =(4)8 =6*8 считаем f(8**m) case m mod 4 of 1: r1:=8; 2: r1:=4; 3: r1:=2; 0: r1:=6; end; в предыдущем посте при вычислении f(k!) (в написании кода) незаслуженно забыл упомянуть случай k=0 Код:
Код:
программа — запись алгоритма на языке понятном транслятору
|
06.07.2012, 14:59 | #8 | |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
А можно по подробнее для соотношения:
Цитата:
|
|
06.07.2012, 15:39 | #9 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 06.07.2012 в 15:49. |
09.07.2012, 10:13 | #10 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
проходит все 20 тестов:
Код:
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск элемента у которого первая цифра больше 1 и последняя не равна 0 | Оля1994 | Помощь студентам | 3 | 06.04.2012 09:51 |
Выбрать числа, у которых совпадает первая и последняя цифра (в Lazarus) | Сristina | Помощь студентам | 0 | 29.03.2011 19:37 |
цифра или буква | roborrr | Microsoft Office Excel | 9 | 14.03.2011 22:34 |
Последняя цифра A^B | darter96 | Помощь студентам | 8 | 25.02.2010 19:44 |
последняя ненулевая цифра факториала | Пашка | Помощь студентам | 6 | 04.04.2008 23:39 |