#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==