#include <stdio.h>
int func(int n) {
int a;
int b = 2; // a_2 の値 (a_{n-1})
int c = 1; // a_1 の値 (a_{n-2})
int i;
if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
} else {
// n = 3 のときは 1 回だけループを実行する
for (i = 2; i <= n; i++) {
a = -2 * b + 2 * c; // a_n = -2 * a_{n-1} + 2 * a_{n-2}
c = b; // 前々項を更新
b = a; // 前項を更新
}
return a;
}
}
int main(void) {
int n = 3;
printf("数列anについて, n=%dのときの値は%d\n", n
, func
(n
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZnVuYyhpbnQgbikgewogICAgaW50IGE7CiAgICBpbnQgYiA9IDI7IC8vIGFfMiDjga7lgKQgKGFfe24tMX0pCiAgICBpbnQgYyA9IDE7IC8vIGFfMSDjga7lgKQgKGFfe24tMn0pCiAgICBpbnQgaTsKICAgIAogICAgaWYgKG4gPT0gMSkgewogICAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIGlmIChuID09IDIpIHsKICAgICAgICByZXR1cm4gMjsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gbiA9IDMg44Gu44Go44GN44GvIDEg5Zue44Gg44GR44Or44O844OX44KS5a6f6KGM44GZ44KLCiAgICAgICAgZm9yIChpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgYSA9IC0yICogYiArIDIgKiBjOyAvLyBhX24gPSAtMiAqIGFfe24tMX0gKyAyICogYV97bi0yfQogICAgICAgICAgICBjID0gYjsgICAgICAgICAgICAgIC8vIOWJjeOAhemgheOCkuabtOaWsAogICAgICAgICAgICBiID0gYTsgICAgICAgICAgICAgIC8vIOWJjemgheOCkuabtOaWsAogICAgICAgIH0KICAgICAgICByZXR1cm4gYTsKICAgIH0KfQoKaW50IG1haW4odm9pZCkgewogICAgaW50IG4gPSAzOwogICAgcHJpbnRmKCLmlbDliJdhbuOBq+OBpOOBhOOBpiwgbj0lZOOBruOBqOOBjeOBruWApOOBryVkXG4iLCBuLCBmdW5jKG4pKTsKICAgIHJldHVybiAwOwp9Cg==