#include #include #include int ptns = 0; int n; /// /// 入力された数字を返す /// /// int ReadNum() { int negate = 0; char c = getchar(); int num = 0; int numCnt = 0; while (c != '\n') { if (c == '-') { negate = 1; } else { num = num * 10 + c - '0'; } c = getchar(); } if (negate == 1) { num *= -1; } return num; } void reflex(int* nums,int cnt) { if (cnt < n) { for (int i = 0;i < 2;i++) { nums[cnt] = i; reflex(nums,cnt+1); } } if (cnt == n) { int ken = 0; for (int i = 0;i < n;i++) { if (nums[i] == 0) { ken++; if (ken == 3) return; } if (nums[i] == 1) { ken = 0; if (i == 0) return; if (nums[i - 1] == 1) return; } } for (int i = 0;i < n;i++) printf("%d", nums[i]); printf("\n"); ptns++; } } int main() { n = ReadNum(); unsigned int* nums; nums = (unsigned int*)malloc(sizeof(unsigned int) * n); nums[0] = 1; nums[1] = 2; nums[2] = 2; for (int i = 3;i < n;i++) { nums[i] = nums[i - 3] + nums[i - 2]; } printf("%d\n",nums[n-1]); }