fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int fib(int n) {
  5. int a = 0, b = 1, t;
  6. for (int i = 2; i <= n; i++) {
  7. t = a + b;
  8. a = b;
  9. b = t;
  10. }
  11. return (n == 0) ? 0 : b;
  12. }
  13.  
  14. int pow_k(int n, int k) {
  15. int r = 1;
  16. for (int i = 0; i < k; i++) r *= n;
  17. return r;
  18. }
  19.  
  20. int main() {
  21. int k, best_n = 1, min_diff = 2147483647;
  22.  
  23. printf("k = ");
  24. scanf("%d", &k);
  25.  
  26. for (int n = 1; n <= 100; n++) {
  27. int f = fib(n);
  28. int p = pow_k(n, k);
  29. int d = abs(f - p);
  30.  
  31. if (d < min_diff) {
  32. min_diff = d;
  33. best_n = n;
  34. }
  35. }
  36.  
  37. printf("最小差の n = %d\n", best_n);
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0.01s 5308KB
stdin
3
stdout
k = 最小差の n = 1