напишите пожалуйста программу С++
Упражнение : числительные (по возможности используйте только циклы и функции)
В заданном диапазоне 10...N найти и вывести на экран:
1) числа, содержащие один ноль
например, N=200 ---> 10, 20, 30, 40, 50, 60, 70, 80, 90..........
2) числа, квадратные обозначения которых заканчиваются одной и той же цифрой
например, N=100 ---> 25(25*25=125) , 76(76*76=5776)
3) числа Армстронга (n-значное число является числом Армстронга, если сумма его цифр, возведенных в степень n, равна собственному значению)
например, N=1000 ---> 153; 371; 370; 407 и т.д.
4) палиндромные числа, которые при возведении в квадрат также дают палиндромы
например, N=100 ---> 11(11*11=121) и т.д.
Ответы
#include <iostream>
#include <cmath>
using namespace std;
// Функция, которая проверяет, содержит ли число n цифру 0
bool containsZero(int n) {
while (n > 0) {
if (n % 10 == 0) {
return true;
}
n /= 10;
}
return false;
}
// Функция, которая проверяет, заканчивается ли квадрат числа n на цифру d
bool endsWith(int n, int d) {
int sq = n * n;
return sq % 10 == d || (sq / 10) % 10 == d;
}
// Функция, которая возвращает сумму цифр числа n, возведенных в степень p
int digitPowerSum(int n, int p) {
int sum = 0;
while (n > 0) {
int digit = n % 10;
sum += pow(digit, p);
n /= 10;
}
return sum;
}
// Функция, которая проверяет, является ли число n числом Армстронга
bool isArmstrong(int n) {
int p = log10(n) + 1; // количество цифр в числе n
return n == digitPowerSum(n, p);
}
// Функция, которая проверяет, является ли число n палиндромом
bool isPalindrome(int n) {
int rev = 0, orig = n;
while (n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return orig == rev;
}
// Функция, которая проверяет, является ли число n палиндромом и его квадрат также палиндром
bool isPalindromeSquare(int n) {
int sq = n * n;
return isPalindrome(n) && isPalindrome(sq);
}
int main() {
int n;
cout << "Введите верхнюю границу диапазона: ";
cin >> n;
cout << "Числа, содержащие один ноль: ";
for (int i = 10; i <= n; i++) {
if (containsZero(i)) {
cout << i << " ";
}
}
cout << endl;
cout << "Числа, квадратные обозначения которых заканчиваются одной и той же цифрой: ";
for (int i = 1; i <= 9; i++) {
for (int j = 1; j * j <= n; j++) {
if (endsWith(j, i)) {
cout << j << " ";
}
}
}
cout << endl;
cout << "Числа Армстронга: ";
for (int i = 1; i <= n; i++) {
if (isArmstrong(i)) {
cout << i << " ";
}
}
cout << endl;
cout << "Палиндромные числа, которые при возведении в квадрат также дают палиндром