fork download
  1. #include <stdio.h>
  2.  
  3. int fibonacci(int n) {
  4. if (n == 0 || n == 1) return 1;
  5. int a = 1, b = 1, temp;
  6. for (int i = 2; i <= n; i++) {
  7. temp = a + b;
  8. a = b;
  9. b = temp;
  10. }
  11. return b;
  12. }
  13.  
  14.  
  15. int power(int n, int k) {
  16. int result = 1;
  17. for (int i = 0; i < k; i++) {
  18. result *= n;
  19. }
  20. return result;
  21. }
  22.  
  23.  
  24. int my_abs(int x) {
  25. return (x < 0) ? -x : x;
  26. }
  27.  
  28. int main() {
  29. int k;
  30. printf("整数 k を入力してください: ");
  31. scanf("%d", &k);
  32.  
  33. int min_n = 1;
  34. int min_diff = 2147483647;
  35.  
  36. for (int n = 1; n <= 100; n++) {
  37. int fn = fibonacci(n);
  38. int nk = power(n, k);
  39. int diff = my_abs(fn - nk);
  40.  
  41. if (diff < min_diff) {
  42. min_diff = diff;
  43. min_n = n;
  44. }
  45. }
  46.  
  47. printf("fnとn^kの差が最小になるnは: %d\n", min_n);
  48. return 0;
  49. }
Success #stdin #stdout 0.01s 5324KB
stdin
2
stdout
整数 k を入力してください: fnとn^kの差が最小になるnは: 1