Среди чисел 1....n найти числа, которые при умножении на 2 будут давать полиндром - C (СИ)
Формулировка задачи:
Добрый день!Помогите с лабороторной по программированию.Вот задача Среди чисел 1....n найдите числа которые при умножении на 2 будут давать полиндром.
Не используя массива,и чтобы вид был примерно такой 1*2=2 палиндром
2*2=4 палиндром
Помогите пожалуйсто отблагодарю по вебмани!
Решение задачи: «Среди чисел 1....n найти числа, которые при умножении на 2 будут давать полиндром»
textual
Листинг программы
#include <stdio.h>
int reverse(int number)
{
int result = 0;
int sign = number > 0 ? 1 : -1;
do
{
result += number % 10;
result *= 10;
}
while (number /= 10);
return (result / 10) * sign;
}
int main(void)
{
size_t n;
size_t i;
scanf("%u", &n);
for (i = 0; i <= n; i++)
if (i * 2 == reverse(i * 2))
printf("%u * %d = %u\n", i, 2, i * 2);
return 0;
}
Объяснение кода листинга программы
Вывод программы представляет собой последовательность чисел от 1 до n, которые при умножении на 2 дают полиндром. Код программы:
- В функции reverse(int number) выполняется перебор цифр числа в обратном порядке и суммирование их в переменную result.
- Затем результат умножается на 10.
- Если очередная цифра числа равна 0, то условие do завершается и функция возвращает полученный результат.
- В функции main(void) после ввода числа n с помощью scanf и вывода сообщения об ошибке в случае неверного ввода, программа выполняет цикл от 0 до n.
- Для каждого значения i выполняется проверка условия i2 == reverse(i2).
- Если условие выполняется, то выводится сообщение в формате
i * 2 = reverse(i*2) - Результатом работы программы будет последовательность чисел от 1 до n, которые при умножении на 2 дают полиндром.