Я собираюсь пойти дальше и предположить, что ваш собственный код сбивает вас с толку, и добавление еще одного такого же слоя сделает код нечитабельным.
Чтобы исправить это, мы можем ввести функцию, которая проверяет, является ли число палиндромом. .
bool is_palindrome(const int num){
int reversed_num = 0;
int temp = num;
while(temp){
int last_num = temp % 10;
temp /= 10;
reversed_num = reversed_num * 10 + last_num;
}
return num == reversed_num;
}
Мы также можем сделать эту функцию гораздо более читабельной, используя std::string
.
bool is_palindrome(const int num){
string original = to_string(num);
return original == string(rbegin(original), rend(original));
}
В последнем случае мы используем обратные итераторы begin
и end
длясоздайте ту же, но перевернутую строку.
Теперь ваш код выглядит намного чище и более читабельным.
int main(){
for(int num = 0; num <= 1000; ++num){
if(is_palindrome(num) && is_palindrome(num * num)){
cout << num << '\n';
}
}
return 0;
}