#include <stdio.h>
void f(int n)
{
if(n==0) return ;
f((n-1)/26);
printf("%c",(n-1)%26+'A');
}
int main()
{
int n;
scanf("%d",&n);
f(n);
}
int f(int n)
{
if(n==1 || n==2)
{
return 1;
}
else
{
return f(n-1)+f(n-2);
}
}
}
재귀함수 : 함수 내에서 자신을 다시 호출
자신으로 다시 정의내리는
void f(int n)
{
if(n==0) return;
printf("%d ",n);
f(n-1);
}
*/
//n부터 1까지 출력
//f(n) n부터 1까지 출력
// n출력 -> n-1부터 1까지출력
// n출력 -> f(n-1)
// n==0
//1 1
//2 3
//3 6
//4 10
//5 15
// f(n) : 1 ~ n의 합 리턴
//int f(int n)
//{
// if(n==1) return 1;
// return n+f(n-1);
//}
//f(n) : n번째 피보나치수
//f(n) : f(n-1)+f(n-2)
//f(1) return 1;
//f(2) return 1;
/*
#include <stdio.h>
int memo[201]={};
int f(int n)
{
if(memo[n]!=0) return memo[n];
if(n==1||n==2) return memo[n]=1;
return memo[n]=(f(n-1)+f(n-2))%10009;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
}
*/
/*
#include <stdio.h>
int memo[51][51]={};
int f(int r,int c)
{
if(memo[r][c]!=0)
{
return memo[r][c];
}
if(r==1||c==1)
{
return memo[r][c]=1;
}
return memo[r][c]=(f(r-1,c)+f(r,c-1))%100000000;
}
int main()
{
int r, c;
scanf("%d %d",&r,&c);
printf("%d",f(r, c));
return 0;
}
*/
#include <stdio.h>
int memo[100001]={};
int f(int n)
{
if(memo [n]!=0)
{
return memo[n];
}
if(n==1||n==2)
{
return memo[n]=n;
}
else if(n==3)
{
return memo[n]=4;
}
else
{
return memo[n]=(f(n-1)+f(n-2)+f(n-3))%1000;
}
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
}