水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。例如:153=13+53+33。 本題要求編寫程序,計算所有N位水仙花數。
輸入格式:
輸入在一行中給出一個正整數N(3≤N≤7)。
輸出格式:
按遞增順序輸出所有N位水仙花數,每個數字占一行。
輸入樣例:
3
輸出樣例:
153
370
371
407
#include <stdio.h> int main() { int n; scanf("%d", &n); int i, low = 1, high; //low表示n位數的最小數,high表示n位數的最大數 for(i = 1; i < n; i++) { low *= 10; } high = low * 10; for(i = low; i < high; i++ ) { //從最小數到最大數逐一遍歷 int t = i; int sum = 0; do { int r = t % 10; //r為數的末尾數字 t /= 10; int j, b = r; for(j = 1; j < n; j++) { //讓r自乘最后得到r的n次方 r *= b; } sum += r; } while(t > 0); if(sum == i) { //讓r的n次方和i比較 printf("%d\n", i); } } return 0; }