Блок задач

4. Структуры данных

Сложность 3

Задача «Happy number»

Реализовать алгоритм, который определяет, является ли число счастливым

Входные данные

Текстовый файл:

<число_1>
<число_2>
<число_3>
...

Пример:

1
2
19

Файл может содержать пустые строки. Их необходимо игнорировать.

Постановка задачи

Счастливое число - это число, определяемое следующим процессом. Возьмем любое положительное число и будем заменяем это число суммой квадратов его цифр. Будем продолжать этот процесс, пока число не станет равно 1 (дальнейший ход алгоритма уже нечего не изменит) или будет бесконечно крутиться в таком цикле. Числа, для которых такой процесс сойдется к 1 - счастливые.

Например, число 19 - счастливое:

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1

Передачу имени файла реализовать через аргументы командной строки.

Выходные данные

Текстовый файл

<число> - <yes|true|false>
...

Пример

1 - true
2 - false
19 - true

Тестирование

Для всех разработанных модулей должны быть созданы наборы unit тестов. Функций ввода/вывода нужно тестировать с помощью std::stringstream.