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

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

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

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

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

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

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

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

7
Модератор
26235 / 13652 / 2591
Регистрация: 12.02.2012
Сообщений: 22,379
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
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 5
07.04.2019, 20:17  [ТС] 3
Вы не совсем правильно поняли. Нужно из диапазона [10..99] найти числа, которые после этого алгоритма сумма квадратов его цифр, затем сумма квадратов цифр полученного числа и т.д.(5 итераций), станут равны 85. У меня пока не получается переделать

Добавлено через 13 минут
Catstail, Нужно из диапазона [10..99] найти такие числа, чтоб 85 получилось. Не поможете? заранее большое спасибо!
0
Модератор
26235 / 13652 / 2591
Регистрация: 12.02.2012
Сообщений: 22,379
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
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 5
07.04.2019, 21:16  [ТС] 5
Цитата Сообщение от Catstail Посмотреть сообщение
- тогда как это понимать?
И из этого списка выбрать наименьшее (так объяснял преподаватель). Спасибо вам большое!
0
Модератор
26235 / 13652 / 2591
Регистрация: 12.02.2012
Сообщений: 22,379
07.04.2019, 21:43 6
Цитата Сообщение от myNameIsNone Посмотреть сообщение
И из этого списка выбрать наименьшее
- так именно это я и сделал в первом коде
0
1 / 1 / 1
Регистрация: 11.06.2015
Сообщений: 37
07.04.2019, 21:55 7
Очень вручили, спасибо!
0
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 5
07.04.2019, 21:58  [ТС] 8
Catstail, Блин, второй код я не заметил... Извиняюсь и ещё раз благодарю!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2019, 21:58

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

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

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


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

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

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