/*
#include <stdio.h>
void f(int n, int k)
{
if(n==0){
return;
}
f(n/k,k);
if(n%k>=10)
{
printf("%c", n%k+55);
}
else
{
printf("%d", n%k);
}
}
int main()
{
int n,k;
scanf("%d %d", &n, &k);
f(n,k);
return 0;
}*/
/*
#include <stdio.h>
int f(int n)
{
if(n==0){
return;
}
f(n-1);
star(n);//printf("%d", n);
printf("\n");
}
int star(int n)
{
if(n==0){
return;
}
star(n-1);
printf("*");
}
int main()
{
int n;
scanf("%d", &n);
f(n);
return 0;
}
*/
/*
#include <stdio.h>
int f(int n)
{
if(n==0){
return;
}
star(n);//printf("%d", n);
printf("\n");
f(n-1);
}
int star(int n)
{
if(n==0){
return;
}
star(n-1);
printf("*");
}
int main()
{
int n;
scanf("%d", &n);
f(n);
return 0;
}
*/
/*
#include <stdio.h>
int f(int n)
{
if(n==0){
return;
}
f(n-1);
g(n);
printf("\n");
}
int g(int n)
{
if(n==0){
return;
}
g(n-1);
printf("%d ", n);
}
int main()
{
int n;
scanf("%d", &n);
f(n);
return 0;
}
재귀 메모이제이션
#include <stdio.h>
int memo[201]={};
int f(int n)
{
if(memo[n]!=0) //계산한 적이 있으면??
{
return memo[n]; // 또 계산하지 말고 그거 리턴
}
if(n==1 || n==2){
return 1;
}
memo[n] = ( f(n-1) + f(n-2) ) %10009; //계산한거 메모해놓기
return memo[n];
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", f(n));
return 0;
}
*/
/*
#include <stdio.h>
int memo[26][26]={};
// memo[5][3] = 파스칼삼각형 5번째줄 3위치의 수
int f(int n, int k)
{
if(memo[n][k]!=0)
{
return memo[n][k];
}
if(){
}
memo[n][k] =
return memo[n][k];
}
int main()
{
int n,k;
scanf("%d %d", &n, &k);
printf("%d", f(n,k));
return 0;
}
*/