自幂数判断 - C/C++ 代码示例
自幂数判断
时间限制: C/C++ 1000MS,其他语言 2000MS 内存限制: C/C++ 256MB,其他语言 512MB 分数: 25
描述
自幂数是指, 一个 N 位数, 满足各位数字 N 次方之和是本身。例如, 153 是 3 位数, 其每位数的 3 次方之和, 1³ + 5³ + 3³ =153, 因此 153 是自幂数; 1634 是 4 位数, 其每位数的 4 次方之和, 1⁴ + 6⁴ + 3⁴ + 4⁴ =1634, 因此 1634 是自幂数。
现在, 输入若干个正整数, 请判断它们是否是自幂数。
输入描述
输入第一行是一个正整数 M, 表示有 M 个待判断的正整数。约定 1≤M≤100 。 从第 2 行开始的 M 行, 每行一个待判断的正整数。约定这些正整数均小于 10⁸ 。
输出描述
输出 M 行, 如果对应的待判断正整数为自幕数, 则输出英文大写字母 ’ T ’ , 否则输出英文大写字母’ F’。
简单版C++程序内容:
#include <iostream>
#include <cmath>
using namespace std;
bool isSelfNumber(int num) {
int temp = num;
int sum = 0;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, to_string(num).length());
temp /= 10;
}
return sum == num;
}
int main() {
int M;
cin >> M;
for (int i = 0; i < M; i++) {
int num;
cin >> num;
if (isSelfNumber(num)) {
cout << 'T' << endl;
} else {
cout << 'F' << endl;
}
}
return 0;
}
代码解析
isSelfNumber函数用于判断一个数是否为自幂数。- 函数首先将输入的数字
num赋值给temp,用于循环计算。 - 循环遍历
temp的每一位数字,使用temp % 10获取个位数,并使用pow(digit, to_string(num).length())计算该数字的 N 次方,其中 N 为num的位数。 - 将每一位数字的 N 次方累加到
sum中,最终判断sum是否等于num,如果相等则返回true,表示是自幂数,否则返回false。 main函数首先读取输入的整数M,然后循环读取M个待判断的正整数。- 对于每个正整数,调用
isSelfNumber函数进行判断,并将结果输出为 'T' 或 'F'。
注意事项
- 本代码使用
to_string(num).length()获取num的位数。 - 本代码仅供参考,可以根据实际情况进行优化。
其他语言的实现
该算法可以使用其他编程语言实现,例如 Python、Java 等。代码的逻辑基本相同,只是语法和函数库有所不同。
其他资源
相关知识点
- 循环
- 运算符
- 函数
- 数据类型
- 字符串操作
原文地址: https://www.cveoy.top/t/topic/qoLe 著作权归作者所有。请勿转载和采集!