백준 9095 c
#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable:4996)
int input(int lower, int upper)
{
int A;
while (1)
{
scanf("%d", &A);
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void input_arr(int* arr, int n)
{
int i;
for (i = 0; i < n; i++)
{
arr[i] = input(1, 11);
}
return;
}
int DP(int num)
{
int i;
int dp[12] = { 0, 1, 2, 4, };
if (num < 4)
{
return dp[num];
}
else
{
for (i = 4; i <= num; i++)
{
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
}
return dp[num];
}
}
void find_result(int* arr, int T)
{
int i;
for (i = 0; i < T; i++)
{
printf("%d\n", DP(arr[i]));
}
return;
}
int main(void)
{
int T, n;
int *arr;
T = input(1, 2000000000);
arr = (int*)malloc(sizeof(int) * T);
input_arr(arr, T);
find_result(arr, T);
free(arr);
return 0;
}