Просмотр полной версии : Сумма чисел произведения чисел Фибоначчи
German Stimban
02.04.2009, 16:18
Пришла тут в голову одна задачка.
Ряд Фибоначчи, ряд в котором каждый n-ый член равен сумме (n-1)-го и (n-2)-го.
1,1,2,3,5...
Пусть a - произведение всех членов ряда Фибоначчи, не превышающих 10.000. Находится сумма чисел, составляющих это число (например b), если она больше или равна 10, то считается сумма числа b до тех пор, пока не получится число, не превышающее 10.
Например:
7868 -> 7+8+6+8=29
29 -> 2+9=11
11 -> 1+1=2
Задача: найти получившееся число
Ulugbek Umirbekov
02.04.2009, 16:26
Какое именно число искать-то?
Evgeniy Sklyarevskiy
02.04.2009, 16:59
Находится сумма чисел, составляющих это число
имеется в виду суммы цифр наверное?
German Stimban
02.04.2009, 16:59
Которое окажется в самом конце (в смысле однозначное число, равное сумме чисел суммы чисел суммы чисел .... произведения ряда Фибоначчи
German Stimban
02.04.2009, 17:00
имеется в виду суммы цифр наверное?
Ага. Извините, опечатался
vtoes288
02.04.2009, 17:17
6765..........24........6?
Nadir Zaitov
02.04.2009, 17:53
Пусть a - произведение всех членов ряда Фибоначчи, не превышающих 10.000. А целочисленная арифметика в компьютере позволит это сделать или нужно еще и библиотеку писать? Получилось целое число в 123 бита длинной.
Evgeniy Sklyarevskiy
02.04.2009, 17:56
на бумажке не посчитать- надо прогу писать - на арбузе была статья как получать числа Фиббоначи рекурсией - отлично работает :-0)
Rooslan Khayrov
02.04.2009, 18:24
Прогу написать не проблема как раз, что я и сделал, но прога выдаёт весьма интересную закономерность, на которую вероятно и намекал автор :-) Начиная с произведения 1 * ... * 21 результат данного алгоритма равен 9.
import Data.List
fib = 1 : 1 : zipWith (+) fib (tail fib)
sumDigits 0 = 0
sumDigits n = d + sumDigits m where (m, d) = n `divMod` 10
reduce n
| n < 10 = n
| otherwise = reduce $ sumDigits n
main = print $ reduce $ product $ takeWhile (<=10000) fib
Evgeniy Sklyarevskiy
02.04.2009, 18:39
результат данного алгоритма равен 9.
да, кстати, сумма цифр числа, делящегося на 9 равна 9 - сума суммы тоже - так что можно было и не считать - если есть хоть 1 сомножитель, делящийся на 9 - то в ответе всегда будет 9
German Stimban
02.04.2009, 18:43
Руслан, правильно.
Предложение остальным не писать программы, а поискать пути попроще - бритву Оккамы вспомнить
German Stimban
02.04.2009, 18:45
результат данного алгоритма равен 9.
да, кстати, сумма цифр числа, делящегося на 9 равна 9 - сума суммы тоже - так что можно было и не считать - если есть хоть 1 сомножитель, делящийся на 9 - то в ответе всегда будет 9
Либо если два сомножителя делятся на 3. В начале ряда они встречаются:
1 1 2 3 5 8 13 21
Nadir Zaitov
02.04.2009, 19:40
Rooslan Khayrov, а почему бы не писать язык программирования. По синтексису похож на какой-то функциональный.
Nadir Zaitov
02.04.2009, 19:42
да, кстати, сумма цифр числа, делящегося на 9 равна 9 Здорово. Совсем забыл - это же школьное правило.
Rooslan Khayrov
02.04.2009, 19:48
Rooslan Khayrov, а почему бы не писать язык программирования. По синтексису похож на какой-то функциональный.
Он и есть — Haskell.
Nadir Zaitov
02.04.2009, 20:58
Haskell Здорово. А где его взять и где взять инструкции по применению?
Nadir Zaitov
05.04.2009, 14:23
Все что было про Haskell перенес в раздел программирования, тема Haskell (http://uforum.uz/showthread.php?t=8613)
Shuhrat Ismailov
31.05.2009, 13:33
да, кстати, сумма цифр числа, делящегося на 9 равна 9 Здорово. Совсем забыл - это же школьное правило.
Нет такого правила.... Контрпример: 222222222 (девять двоек проставил учитель в журнале!)
Чтобы исправить вышеуказанные двойкипопробуйте решить задачку. Какова сумма всех цифр, используемых при записи всех чисел, первое из которых единица, а последнее миллиард?
Evgeniy Sklyarevskiy
31.05.2009, 13:50
Нет такого правила.... Контрпример: 222222222
Есть такое правило
222222222 : 9 = 24691358 :-0)
Точнее, сумма цифр равна не 9, а числу, кратному 9, если снова и снова сложить цифры, то получим 9
Shuhrat Ismailov
31.05.2009, 15:31
Нет такого правила.... Контрпример: 222222222
Есть такое правило
222222222 : 9 = 24691358 :-0)
Точнее, сумма цифр равна не 9, а числу, кратному 9, если снова и снова сложить цифры, то получим 9
Итерация школьного правила. А как насчет задачки в оффтопе?
А как насчет задачки в оффтопе? Оффтоп: Чтобы исправить вышеуказанные двойкипопробуйте решить задачку. Какова сумма всех цифр, используемых при записи всех чисел, первое из которых единица, а последнее миллиард? тут совсем просто -2:girl_blum:
Shuhrat Ismailov
31.05.2009, 19:34
тут совсем просто -2
непонятен ответ... числа все натуральные
непонятен ответ... числа все натуральныену да обманулась... -над просто все сложить... -потом пересчитаю...
хотя... вот...:) 9499999950 :) -спуталась с условием..:)
Точнее, сумма цифр равна не 9, а числу, кратному 9, если снова и снова сложить цифры, то получим 9есть еще похожие (немножко другие) правила для 7, 11, и 13 ...:girl_sigh:
хотя... вот... 9499999950 -спуталась с условием.. 4.05*10^10
Shuhrat Ismailov
31.05.2009, 23:02
хотя... вот... 9499999950 -спуталась с условием.. 4.05*10^10
Вы последнее число не учли
Вы последнее число не учли
нет, я не учла первое...:girl_blum: 4.05*10^10+1:001:
Shuhrat Ismailov
01.06.2009, 09:32
Вы последнее число не учли
нет, я не учла первое...:girl_blum: 4.05*10^10+1:001:
мОЛОДЕЦ!
Nadir Zaitov
01.06.2009, 10:41
4.05 или 4,5? Что-то оно меня смущает.
Nadir Zaitov
01.06.2009, 12:32
или 4,5? Что-то оно меня смущает. Да. Уже не смущает... в оригинале должно было быть: 45*0,9*10^9
vBulletin® v3.8.5, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot