[GESP2306二级] 自幂数判断

本题难点在于输入的数字长度不确定

根据自幂数的特点,我们需要先统计输入的数字是几位数,才能确定几次方的和,最后再判断

循环多组数据需要判断,每次判断前,需要把使用过的数据清零,避免原来的数据干扰新的判断

#include <bits/stdc++.h>
using namespace std;
int main(){
    int m,n;
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>n; // 接下来要判断n是否为自幂数
        int k=n,c=0; // k是替身,c是位数
        while(k>0){
            c++; // 统计位数
            k/=10;
        }
        int sum=0; // 求和
        k=n; // 再次恢复k的数据
        while(k>0){
            sum+=round(pow(k%10,c));
            k/=10;
        }
        if(n==sum) cout<<"T\n";
        else cout<<"F\n";
    }
    return 0;
}