Палиндром в С++ без функций
Задано натуральне число m. Якщо це не паліндром (паліндром це число, яке однакове з обох боків – число-перевертень), то записуємо його у зворотному порядку та додаємо до заданого. Кроки повторюються, доки не буде отримано число-паліндром. Кількість виконаних операцій називають рівнем паліндромності заданого числа. Знайти рівень паліндромності числа m.
Я не понимаю как сделать уровень полдромности без функции, я такое ещё не учил
Ответы (2 шт):
Автор решения: Анонимный Паша
→ Ссылка
#include <algorithm> // std::reverse
#include <iostream> // std::cout, std::cin
#include <string> // std::to_string
bool is_palindrome(int m) {
std::string a = std::to_string(m);
std::string b = std::to_string(m);
std::reverse(a.begin(), a.end());
return a == b;
}
int main() {
std::cout << "m = ";
int m;
std::cin >> m;
if (is_palindrome(m)) {
std::cout << "Число является палиндромом!\n";
} else {
std::cout << "Число не является палиндромом :(\n";
}
return 0;
}
Автор решения: Mikhailo
→ Ссылка
Все не просто просто, а просто очень просто.
#include <iostream>
using namespace std;
unsigned long long rev(unsigned long long n) {
unsigned long long m = 0;
while (n) {
m = m * 10 + n % 10;
n = n / 10;
};
return m;
}
int main() {
unsigned long long m;
cout << "m = ";
cin >> m;
int level = 0;
for (;; level++) {
unsigned long long r = rev(m);
if (r == m) {
cout << "Palindrome " << m << ", level " << level << endl;
return 0;
}
m += r;
}
}