描述【问题描述】自幂数是指 一个 N 位数 满足各位数字 N 次方之和是本身。例如 153 是 3 位数 其每位数的 3 次方之和 1 3 +5 3 +3 3 =153 因此 153 是自幂数; 1634 是 4 位数 其每位数的 4 次方之和 1 4 +6 4 +3 4 +4 4 =1634 因此 1634 是自 幂数。现在 输入若干个正整数 请判断它们是否是自幂数。用c++做输入描述输入第一行
【问题分析】 题目要求判断输入的正整数是否是自幂数。对于每个正整数,需要计算其每位数字的N次方之和,并与该正整数进行比较。
【思路】
- 读取输入的M,表示有M个正整数需要判断。
- 循环M次,对于每个正整数执行以下步骤: a. 读取一个待判断的正整数num。 b. 将num转换为字符串,以便可以逐位遍历每个数字。 c. 初始化sum为0,用于保存每位数字的N次方之和。 d. 遍历num的每个字符,将每位数字的N次方加到sum中。 e. 如果sum等于num,则输出'T',否则输出'F'。
- 结束。
【代码实现】
#include <iostream>
#include <cmath>
using namespace std;
bool isSelfNumber(int num, int N) {
string numStr = to_string(num);
int sum = 0;
for (char c : numStr) {
int digit = c - '0';
sum += pow(digit, N);
}
return sum == num;
}
int main() {
int M;
cin >> M;
for (int i = 0; i < M; i++) {
int num;
cin >> num;
if (isSelfNumber(num, 3)) {
cout << 'T' << endl;
} else {
cout << 'F' << endl;
}
}
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/iIiX 著作权归作者所有。请勿转载和采集!