最初,我使用math.h中的pow函数,当输入为7时,pat测试系统显示超时。一直在想是不是程序变量有溢出的问题。
后来,改用自己写的pow函数,发现可以通过pat测试。
1 #include<stdio.h> 2 int pow(int m, int n); 3 4 int main() 5 { 6 int n, i, temp; 7 int number1, number2; 8 int digit; 9 int sum; 10 scanf_s("%d", &n); 11 number1 = pow(10, (n - 1.0)); 12 number2 = pow(10, n) - 1; 13 14 for (i = number1; i <= number2; i++) 15 { 16 sum = 0; 17 temp = i; 18 while (temp != 0) 19 { 20 digit = temp % 10; 21 temp = temp / 10; 22 sum = sum + pow(digit, n); 23 } 24 if (sum == i) 25 { 26 printf("%d\n", i); 27 } 28 } 29 30 return 0; 31 } 32 int pow(int m, int n) 33 { 34 int result, i; 35 if (n == 0) 36 { 37 return 1; 38 } 39 else 40 { 41 result = 1; 42 for (i = 1; i <= n; i++) 43 { 44 result = result * m; 45 } 46 return result; 47 } 48 }