#include <stdio.h>
int func(int n){
int a, b = 2, c = 1; // b = a2, c = a1
int i;
if (n == 1) return c;
if (n == 2) return b;
for (i = 3; i <= n; i++) {
a = -2 * b + 2 * c; // an+2 = -2an+1 + 2an を1つずらして使用
c = b; // 次のループのため更新
b = a;
}
return a;
}
int main(void) {
int n = 3;
printf("数列anについて, n=%dのときの値は%d\n", n
, func
(n
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZnVuYyhpbnQgbil7CiAgICBpbnQgYSwgYiA9IDIsIGMgPSAxOyAgLy8gYiA9IGEyLCBjID0gYTEKICAgIGludCBpOwoKICAgIGlmIChuID09IDEpIHJldHVybiBjOwogICAgaWYgKG4gPT0gMikgcmV0dXJuIGI7CgogICAgZm9yIChpID0gMzsgaSA8PSBuOyBpKyspIHsKICAgICAgICBhID0gLTIgKiBiICsgMiAqIGM7ICAvLyBhbisyID0gLTJhbisxICsgMmFuIOOCkjHjgaTjgZrjgonjgZfjgabkvb/nlKgKICAgICAgICBjID0gYjsgICAvLyDmrKHjga7jg6vjg7zjg5fjga7jgZ/jgoHmm7TmlrAKICAgICAgICBiID0gYTsKICAgIH0KCiAgICByZXR1cm4gYTsKfQoKaW50IG1haW4odm9pZCkgewogICAgaW50IG4gPSAzOwogICAgcHJpbnRmKCLmlbDliJdhbuOBq+OBpOOBhOOBpiwgbj0lZOOBruOBqOOBjeOBruWApOOBryVkXG4iLCBuLCBmdW5jKG4pKTsKICAgIHJldHVybiAwOwp9Cg==