B3841 [GESP202306 二级] 自幂数判断 - 洛谷
题目描述
自幂数是指,一个 N 位数,满足各位数字 N 次方之和是本身。例如,153 是 3 位数,其每位数的 3 次方之和,13+53+33=153,因此 153 是自幂数;1634 是 4 位数,其每位数的 4 次方之和,14+64+34+44=1634,因此 1634 是自幂数。现在,输入若干个正整数,请判断它们是否是自幂数。
输入格式
输入第一行是一个正整数 M,表示有 M 个待判断的正整数。约定 1≤M≤100。
从第 2 行开始的 M 行,每行一个待判断的正整数。约定这些正整数均小于 108。
输出格式
输出 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
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main() {
LL n;
cin >> n;
vector<LL> arry(n, 0);
vector<LL> vct;
for (LL i = 0; i < n; i++) {
cin >> arry[i];
}
LL digt = 0;
for (LL i = 0; i < arry.size(); i++) {
LL aryNm = arry[i];
while (aryNm > 0) {
digt = aryNm % 10;
aryNm /= 10;
vct.push_back(digt);
}
LL sum = 0;
for (LL j = 0; j < vct.size(); j++) {
LL ans = 1;
for (LL k = 0; k < vct.size(); k++) {
ans *= vct[j];
}
sum += ans;
}
if (sum == arry[i]) {
cout << 'T' << endl;
} else {
cout << 'F' << endl;
}
vct.clear();
}
return 0;
}
967

被折叠的 条评论
为什么被折叠?



