水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)
自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number)。
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。
例如:1^3 + 5^3+ 3^3 = 153。
#includeint main() { int i; scanf("%d",i); // 这里是用户输入的位数 int n = 1; int fast = 1; // 根据用户输入的位数,得到最小的那个位数对应的值 while(n < i) { fast *= 10; // 要进行 n-1 次相乘 n++; } n = fast; // 做一个变量的转存,因为在这个过程中,要消耗变量 // 这哭做的是 100 - 999 的遍历 while(n < fast*10) { int t = n; // 再次做一个变量的转存,为了便于后期 进行判断 int sum = 0; // 最取出的 各个位数进行 求和 do{ int d = t % 10; t /= 10; // 进行 i 次方运算 int p = d; int j = 1; while(j < i) { p *= d; j++; } sum += p; // 求和 }while(t > 0); // 判断是否相等,相等则输出 if(sum == n) { printf("%dn",n); } n++; } return 0; }



