「水仙花數」(Narcissistic Number / Armstrong Number)指 n 位數,其各位數字 n 次方之和等於該數本身。經典定義為三位數:abc = a³ + b³ + c³(如 153, 370, 371, 407)。
常見 OJ 題目要求:
n 位水仙花數(n 為輸入)。#include#include int main() { for (int i = 100; i < 1000; i++) { int a = i / 100; int b = (i / 10) % 10; int c = i % 10; if (a*a*a + b*b*b + c*c*c == i) { printf("%d\n", i); } } return 0; }
bool isNarcissistic(int num) {
int original = num;
int digits = 0;
int temp = num;
while (temp > 0) { digits++; temp /= 10; }
int sum = 0;
temp = num;
while (temp > 0) {
int d = temp % 10;
int p = 1;
for (int i = 0; i < digits; i++) p *= d;
sum += p;
temp /= 10;
}
return sum == original;
}
原文內容極少,僅含題目元信息。以上為基於題目名稱的標準解法補充。實際提交時請以 OJ 具體題面為準。