自幂数判断c++

【问题描述】

自幂数是指,一个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 是自

幂数。

现在,输入若干个正整数,请判断它们是否是自幂数。

【输入描述】

输入第一行是一个正整数M,表示有M个待判断的正整数。约定 1 ≤ M ≤ 100

从第 2 行开始的M行,每行一个待判断的正整数。约定这些正整数均小于10^{8}

【输出描述】

输出M行,如果对应的待判断正整数为自幂数,则输出英文大写字母'T',否

则输出英文大写字母'F'

提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数

并输出,再输入下一个数。

【样例输入 1

3
152
111
153

【样例输出 1

F
F
T

【样例输入 2

5
8208
548834
88593477
12345
5432

【样例输出 2

T
T
T
F
F

【题目大意】

判断 M 个给定的整数是否是自幂数。一个 x 位的整数 n 是自幂数的条件是:各

位数字的 x 次方之和等于 n。给定的正整数均小于10^{8}10^{8}

【考纲知识点】多层分支/循环结构(二级)

【解题思路】

1. 每次输入 n 之后,首先计算 n 的位数 l。可以把 n 赋值给 t,然后不断把 t

10,直到 t 等于 0 为止,每除一次就把变量 l 1

2. 得到位数 l 后,再次把 t 赋值为 n,然后使用 while 循环,每次取 t 的个位,

计算其 l 次方计入总和 sum,然后把 t 除以 10,直到 t 等于 0 为止。

3. 如果 sum 等于 n,说明 n 是自幂数,按照题目要求输出即可。

【参考程序】

#include <iostream>
using namespace std;
int main() {
    int m = 0;
    cin >> m;
    for (int i = 0; i < m; i++) {
        int n = 0;
        cin >> n;
        // 数一下 n 有多少位数,记为 l
        int t = n, l = 0;
        while (t > 0) {
            t /= 10;
            l++;
        }
        // 每位数 l 次方求和,记为 sum
    int sum = 0;
    t = n;
    while (t > 0) {
        int d = t % 10;
        t /= 10;
        int mul = 1;
        for (int j = 0; j < l; j++)
            mul *= d;
        sum += mul;
    }
    // 根据 sum 和 n 是否相等,判断是否为自幂数
    if (sum == n)
        cout << "T" << endl;
    else
        cout << "F" << endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值