本题难点在于输入的数字长度不确定
根据自幂数的特点,我们需要先统计输入的数字是几位数,才能确定几次方的和,最后再判断
循环多组数据需要判断,每次判断前,需要把使用过的数据清零,避免原来的数据干扰新的判断
#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;
}