#include <stdio.h>
#include <math.h>
#include <limits.h>
unsigned long long fib(int n) {
if (n == 0 || n == 1)
return 1;
unsigned long long f0 = 1, f1 = 1, fn;
for (int i = 2; i <= n; i++) {
fn = f0 + f1;
f0 = f1;
f1 = fn;
}
return fn;
}
unsigned long long power(int n, int k) {
unsigned long long result = 1;
for (int i = 0; i < k; i++) {
result *= n;
}
return result;
}
int main(void) {
int k;
printf("整数kを入力してください:");
scanf("%d", &k);
int min_n = 1;
unsigned long long min_diff = ULLONG_MAX;
for (int n = 1; n <= 100; n++) {
unsigned long long fn = fib(n);
unsigned long long nk = power(n, k);
unsigned long long diff = fn > nk ? fn - nk : nk - fn;
if (diff < min_diff) {
min_diff = diff;
min_n = n;
}
}
printf("fnとn^kの差が最小になるnは:%d\n", min_n);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KCnVuc2lnbmVkIGxvbmcgbG9uZyBmaWIoaW50IG4pIHsKICAgIGlmIChuID09IDAgfHwgbiA9PSAxKQogICAgICAgIHJldHVybiAxOwoKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmMCA9IDEsIGYxID0gMSwgZm47CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmbiA9IGYwICsgZjE7CiAgICAgICAgZjAgPSBmMTsKICAgICAgICBmMSA9IGZuOwogICAgfQogICAgcmV0dXJuIGZuOwp9Cgp1bnNpZ25lZCBsb25nIGxvbmcgcG93ZXIoaW50IG4sIGludCBrKSB7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0ID0gMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgazsgaSsrKSB7CiAgICAgICAgcmVzdWx0ICo9IG47CiAgICB9CiAgICByZXR1cm4gcmVzdWx0Owp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgazsKICAgIHByaW50Zigi5pW05pWwa+OCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhO+8miIpOwogICAgc2NhbmYoIiVkIiwgJmspOwoKICAgIGludCBtaW5fbiA9IDE7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgbWluX2RpZmYgPSBVTExPTkdfTUFYOwoKICAgIGZvciAoaW50IG4gPSAxOyBuIDw9IDEwMDsgbisrKSB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGZuID0gZmliKG4pOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuayA9IHBvd2VyKG4sIGspOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlmZiA9IGZuID4gbmsgPyBmbiAtIG5rIDogbmsgLSBmbjsKCiAgICAgICAgaWYgKGRpZmYgPCBtaW5fZGlmZikgewogICAgICAgICAgICBtaW5fZGlmZiA9IGRpZmY7CiAgICAgICAgICAgIG1pbl9uID0gbjsKICAgICAgICB9CiAgICB9CgogICAgcHJpbnRmKCJmbuOBqG5ea+OBruW3ruOBjOacgOWwj+OBq+OBquOCi27jga/vvJolZFxuIiwgbWluX24pOwogICAgcmV0dXJuIDA7Cn0K