Форум программистов, компьютерный форум, киберфорум
Наши страницы
Haskell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
myNameIsNone
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 5
1

Функция, определяющая значение числа для которого считается сумма квадратов его цифр, чтобы в итоге получилось число 85

07.04.2019, 18:28. Просмотров 974. Ответов 7

Написать функцию, определяющую значение числа, для которого считается сумма квадратов его цифр, затем сумма квадратов цифр полученного числа и т.д.(5 итераций), чтобы в итоге получилось число 85. Учесть, что элементами, формируемой в программе последовательности чисел могут быть только двухзначные натуральные числа, при этом, если существует несколько вариантов выбора значения для элемента, то всегда следует выбирать наименьшее из возможных альтернатив.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2019, 18:28
Ответы с готовыми решениями:

Сумма квадратов цифр любого числа в итоге равняется числу из интервала [1,9].
Помогите решить с объяснениями. Сумма квадратов цифр любого числа в итоге равняется числу из...

Функция, определяющая, у какого числа сумма цифр больше
Помогите написать программу с комментариями (Функции) Написать функцию, которая принимает два...

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

Найти двузначное число, у которого сумма квадратов цифр десятков и единиц делится на 3
Очень нужна ваша помощь!!! Необходимо решить данную задачу в консоли, c#. Найти двузначное...

Найти наибольшее трехзначное число, сумма квадратов цифр которого равна самому числу
Помогите решить задачку. Нужно найти наибольшее трехзначное число,сумма квадратов цифр которого...

7
Catstail
Модератор
24598 / 12506 / 2284
Регистрация: 12.02.2012
Сообщений: 20,321
07.04.2019, 19:32 2
Лучший ответ Сообщение было отмечено myNameIsNone как решение

Решение

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sumsqdig :: Int -> Int
sumsqdig n | (n<10) = n*n
           | otherwise = (n `mod` 10)^2 + sumsqdig (n `div` 10)
           
mklist :: Int -> Int -> [Int]
mklist n k | (k==6) = []
           | otherwise = sn : (mklist sn (k+1))
                         where sn=sumsqdig n           
                         
search  :: Int -> Int
search n | 85 `elem` (mklist n 1) = n
         | otherwise = search (n+1)         
 
 
*Main> search 1
5
 
-- проверка
 
*Main> mklist 5 1
[25,29,85,89,145]
Добавлено через 6 минут
Если нужно, чтобы 85 получилось именно на 5-й итерации, то:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sumsqdig :: Int -> Int
sumsqdig n | (n<10) = n*n
           | otherwise = (n `mod` 10)^2 + sumsqdig (n `div` 10)
         
mkiter n = last $ take 6 $ iterate sumsqdig n        
         
search' :: Int -> Int 
search' n | (mkiter n) == 85 = n
          | otherwise = search' (n+1)  
 
*Main> search' 1
14
 
-- проверка:
 
*Main> mklist 14 1
[17,50,25,29,85]
1
myNameIsNone
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 5
07.04.2019, 20:17  [ТС] 3
Вы не совсем правильно поняли. Нужно из диапазона [10..99] найти числа, которые после этого алгоритма сумма квадратов его цифр, затем сумма квадратов цифр полученного числа и т.д.(5 итераций), станут равны 85. У меня пока не получается переделать

Добавлено через 13 минут
Catstail, Нужно из диапазона [10..99] найти такие числа, чтоб 85 получилось. Не поможете? заранее большое спасибо!
0
Catstail
Модератор
24598 / 12506 / 2284
Регистрация: 12.02.2012
Сообщений: 20,321
07.04.2019, 20:59 4
Цитата Сообщение от myNameIsNone Посмотреть сообщение
найти такие числа, чтоб 85 получилось
- за пять итераций?
Цитата Сообщение от myNameIsNone Посмотреть сообщение
при этом, если существует несколько вариантов выбора значения для элемента, то всегда следует выбирать наименьшее из возможных альтернатив.
- тогда как это понимать?

Вот получение списка всех двузначных, которые дают 85 за пять итераций:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sumsqdig :: Int -> Int
sumsqdig n | (n<10) = n*n
           | otherwise = (n `mod` 10)^2 + sumsqdig (n `div` 10)
           
mkiter n = last $ take 6 $ iterate sumsqdig n        
         
search' :: Int -> Int 
          
task = map fst $ filter (\(x,y) -> y==85) $ zip [10..99] $ map mkiter [10..99]         
 
-- Проверка:
 
*Main> task
[14,22,27,41,48,72,84]
1
07.04.2019, 20:59
myNameIsNone
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 5
07.04.2019, 21:16  [ТС] 5
Цитата Сообщение от Catstail Посмотреть сообщение
- тогда как это понимать?
И из этого списка выбрать наименьшее (так объяснял преподаватель). Спасибо вам большое!
0
Catstail
Модератор
24598 / 12506 / 2284
Регистрация: 12.02.2012
Сообщений: 20,321
07.04.2019, 21:43 6
Цитата Сообщение от myNameIsNone Посмотреть сообщение
И из этого списка выбрать наименьшее
- так именно это я и сделал в первом коде
0
Svetlanana11
1 / 1 / 1
Регистрация: 11.06.2015
Сообщений: 37
07.04.2019, 21:55 7
Очень вручили, спасибо!
0
myNameIsNone
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 5
07.04.2019, 21:58  [ТС] 8
Catstail, Блин, второй код я не заметил... Извиняюсь и ещё раз благодарю!
0
07.04.2019, 21:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2019, 21:58

Найти двузначные числа, сумма квадратов цифр которого, на 1 больше их тройного произведения
определить все возможные двузначные числа, для которых выполняется условие : сумма квадратов цифр...

Счастливым называется шестизначное число, у которого сумма его первых трех цифр равна сумме его трех последних цифр
Опледелить является ли заданное шестизначное число счастливым? &quot;Счастливым называется...

Счастливым называется семизначное число, у которого сумма его первых трех цифр равна сумме его трех последних цифр
Семизначное число называется &quot;Счастливым&quot;, если у него сумма первых трех цифр равна сумме последних...


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

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

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