【题目描述】
请输入一个 11 位以内的数,判断它是几位(小于等于10位)自幂数?
例如,输入 9800817,输出 9800817 is 7-bit self idempotence.
【知识点:自幂数】
一个 n 位的自然数,若它各位上的数字的 n 次幂之和等于它本身,则称之为 n 位自幂数。
一位自幂数:独身数 → 0,1,2,3,4,5,6,7,8,9
二位自幂数:/
三位自幂数:水仙花数 → 153,370,371,407
四位自幂数:四叶玫瑰数 → 1634,8208,9474
五位自幂数:五角星数 → 54748,92727,93084
六位自幂数:六合数 → 548834
七位自幂数:北斗七星数 → 1741725,4210818,9800817,9926315
八位自幂数:八仙数 → 24678050,24678051,88593477
九位自幂数:九九重阳数 → 146511208,472335975,534494836,912985153
十位自幂数:十全十美数 → 4679307774
【算法代码】
#include <bits/stdc++.h>
using namespace std;
bool isWhat(int x) {
int cnt=0;
int t=x;
while(t!=0) { //Determine the number of digits
cnt++;
t=t/10;
}
t=x;
int sum=0;
int tt;
while(t!=0) { //Calculate n-bit self idempotence
tt=t%10;
sum+=pow(tt,cnt);
t/=10;
}
if(sum==x) {
switch(cnt) {
case 1:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 2:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 3:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 4:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 5:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 6:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 7:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 8:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 9:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
case 10:
cout<<x<<" is "<<cnt<<"-bit self idempotence.";
break;
}
} else cout<<x<<" is not self idempotence.";
}
int main() {
int n;
cin>>n;
isWhat(n);
return 0;
}
/*
in:
9800817
out:
9800817 is 7-bit self idempotence.
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/138269242
https://blog.csdn.net/weixin_47786582/article/details/122509330