#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;
}
// nのk乗を求める関数
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+CiNpbmNsdWRlIDxsaW1pdHMuaD4KCi8vIOODleOCo+ODnOODiuODg+ODgeaVsOOCkuaxguOCgeOCi+mWouaVsAp1bnNpZ25lZCBsb25nIGxvbmcgZmliKGludCBuKSB7CiAgICBpZiAobiA9PSAwIHx8IG4gPT0gMSkKICAgICAgICByZXR1cm4gMTsKCiAgICB1bnNpZ25lZCBsb25nIGxvbmcgZjAgPSAxLCBmMSA9IDEsIGZuOwogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgZm4gPSBmMCArIGYxOwogICAgICAgIGYwID0gZjE7CiAgICAgICAgZjEgPSBmbjsKICAgIH0KICAgIHJldHVybiBmbjsKfQoKLy8gbuOBrmvkuZfjgpLmsYLjgoHjgovplqLmlbAKdW5zaWduZWQgbG9uZyBsb25nIHBvd2VyKGludCBuLCBpbnQgaykgewogICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc3VsdCA9IDE7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykgewogICAgICAgIHJlc3VsdCAqPSBuOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4odm9pZCkgewogICAgaW50IGs7CiAgICBwcmludGYoIuaVtOaVsGvjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTvvJoiKTsKICAgIHNjYW5mKCIlZCIsICZrKTsKCiAgICBpbnQgbWluX24gPSAxOwogICAgdW5zaWduZWQgbG9uZyBsb25nIG1pbl9kaWZmID0gVUxMT05HX01BWDsKCiAgICBmb3IgKGludCBuID0gMTsgbiA8PSAxMDA7IG4rKykgewogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmbiA9IGZpYihuKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmsgPSBwb3dlcihuLCBrKTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRpZmYgPSBmbiA+IG5rID8gZm4gLSBuayA6IG5rIC0gZm47CgogICAgICAgIGlmIChkaWZmIDwgbWluX2RpZmYpIHsKICAgICAgICAgICAgbWluX2RpZmYgPSBkaWZmOwogICAgICAgICAgICBtaW5fbiA9IG47CiAgICAgICAgfQogICAgfQoKICAgIHByaW50ZigiZm7jgahuXmvjga7lt67jgYzmnIDlsI/jgavjgarjgotu44Gv77yaJWRcbiIsIG1pbl9uKTsKICAgIHJldHVybiAwOwp9Cg==