自幂数判断

时间限制: 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;
}

代码解析

  1. isSelfNumber 函数用于判断一个数是否为自幂数。
  2. 函数首先将输入的数字 num 赋值给 temp,用于循环计算。
  3. 循环遍历 temp 的每一位数字,使用 temp % 10 获取个位数,并使用 pow(digit, to_string(num).length()) 计算该数字的 N 次方,其中 N 为 num 的位数。
  4. 将每一位数字的 N 次方累加到 sum 中,最终判断 sum 是否等于 num,如果相等则返回 true,表示是自幂数,否则返回 false
  5. main 函数首先读取输入的整数 M,然后循环读取 M 个待判断的正整数。
  6. 对于每个正整数,调用 isSelfNumber 函数进行判断,并将结果输出为 'T' 或 'F'。

注意事项

  1. 本代码使用 to_string(num).length() 获取 num 的位数。
  2. 本代码仅供参考,可以根据实际情况进行优化。

其他语言的实现

该算法可以使用其他编程语言实现,例如 Python、Java 等。代码的逻辑基本相同,只是语法和函数库有所不同。

其他资源

相关知识点

  • 循环
  • 运算符
  • 函数
  • 数据类型
  • 字符串操作
自幂数判断 - C/C++ 代码示例

原文地址: https://www.cveoy.top/t/topic/qoLe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录