|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.11.2008, 18:27 | #1 |
Пользователь
Регистрация: 09.01.2008
Сообщений: 30
|
Задача не из легких
Подскажыте как решеть такую задачу.
Найти послед. цыфру в числе n!(n<=32000). Но если последняя - 0, то показать перед послед. Пример Вход: 5 Выход: 2 |
13.11.2008, 18:39 | #2 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
Вычисляй факториал, переводи результат в строку и обращайся к ней, как к массиву символов...
|
13.11.2008, 18:42 | #3 |
Пользователь
Регистрация: 09.01.2008
Сообщений: 30
|
|
13.11.2008, 18:44 | #4 |
Пользователь
Регистрация: 09.01.2008
Сообщений: 30
|
Думаю должен быть интересный мат. подход к етой задачке!
|
13.11.2008, 18:54 | #5 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,547
|
А если обе последние цифры 0, то показать пред пред последней или все равно последнюю (т.е. 0)?
Если разложить N! на множители, то получим: 2*3*4*5*6*7*8*9*10*11*12*13*...*N = (2*5)*10*3*4*6*7*8*9*11*12*13*...*N = 10*10*3*4*6*7*8*9*11*12*13*...*N = 100*3*4*6*7*8*9*11*12*13*...*N Т.е. 5! и выше всегда будет иметь последнюю цифру 0, а 10! и выше всегда два 0 в конце. А если так, то решение вообще тривиальное. Цитата:
E-Mail: arigato.freelance@gmail.com
|
|
13.11.2008, 19:13 | #6 |
Пользователь
Регистрация: 09.01.2008
Сообщений: 30
|
Нет, всегда надо искать последнюю цыфру, которая не равна нулю...
|
13.11.2008, 19:17 | #7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
последняя цифра ( последняя цифра для ( (9!)^(n div 10) ) * ( (n mod 10)! ) )
программа — запись алгоритма на языке понятном транслятору
|
13.11.2008, 19:29 | #8 |
Пользователь
Регистрация: 09.01.2008
Сообщений: 30
|
|
13.11.2008, 20:04 | #9 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
попробую
на последнюю цифры влияет только последняя цифра поэтому last(n!)=last((10k+x)!)=last((10k)! *x!)=last((10k)!)*last(x!) last((10k)!) =last((10!) ^k) =last(10!) ^k в
программа — запись алгоритма на языке понятном транслятору
|
13.11.2008, 22:49 | #10 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
изменения к вычмслениям
last((10k)!)=last(((9!)^k)*last(k!) =last(9!)^k *last(k!) применяя формулу рекурсивно получаем last(n!)=last(x!)*last(9!)^k *last(k!)=last(xn!)*..*last(x1!)* last(9!)^(xn-1 +..+x1) xn младшая цифра чмсла xn-1следующая цифра ... x1 старшая цифра хотелось бы узнать откуда взялись эти задачи.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 13.11.2008 в 22:52. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача | Vitas1234 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 07.07.2008 12:10 |
Несколько очень легких задачек!проверьте себя!!на разные темы,от нах-я суммы до массивов!!прошу решить,кн | ruslan55 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 17.06.2008 12:43 |
Задача/C++ | Stan | Помощь студентам | 2 | 24.01.2008 20:33 |