#include <stdio.h>
int cr[31]={}; //분모
int cn[31]={}; //분자
int Nc(int n,int n2,int c,int m) //cn[] 배열에 r-- 값 추가
{
if(n==c)
{
cn[m]=n;
printf("Nc");
return 0;
}
cn[m]=n;
n--;
return Nc(n,n2,c,m);
}
int Rc(int r,int r2,int c,int m) //cr[] 배열에 r-- 값 추가
{
if(r==c)
{
cr[m]=r;
printf("Rc");
return r2;
}
cr[m]=r;
m++;
r--;
return Rc(r,r2,c,m);
}
int Rf(int r,int r2,int m) //cr[] 배열에 r-- 값 추가
{
if(r==0)
{
printf("Rf");
return r2;
}
cr[m]=r;
m++;
r--;
return Rf(r,r2,m);
}
int Nf(int n,int n2,int m) //cn[] r-- 값 배열에 추가
{
if(n==0)
{
printf("Nf");
return n2;
}
cn[m]=n;
n++;
n--;
return Nf(n,n2,m);
}
void dev(int m,int m1) //cr 분모 배열 약분, cr 분모 배열 약분 후 cn 분자 배열 1로 바꾸기
{
if(cn[m]==0)
{
m=0;
m1++;
}
if(cr[m1]==0)
{
printf("dev");
return;
}
if(cr[m1]%cn[m]==0)
{
cr[m1]=cr[m1]/cn[m];
cn[m]=1;
}
m++;
return dev(m,m1);
}
int main()
{
int n,n2=1,c,r,r2=1,m=1,m1=1;
scanf("%d %d",&n,&r);
if(n>r)
{
c=n-r; //c에 변수 추가.
c++; //~ 가 더 크다면을 위한 변수 (Nc void 함수 에서 'n 이 c 와 같다면?' 인 코드, Nc void 함수는 cn[] 배열에 방금 전 코드가 될때까지 반복하여 r-- 값 계산 후 배열에 값 저장.
n=Nc(n,n2,c,m); //Nc void 함수 실행.
m=1; //m 값 초기화.
c=Rf(r,r2,m); //cr[] 배열에 r-- 값 추가
m=1; //m 값 초기화.
dev(m,m1); //cr 분모 배열 약분, cr 분모 배열 약분 후 cn 분자 배열 1로 바꾸기
}
else
{
c=r-n; //c에 변수 추가
c++; //~ 가 더 크다면을 위한 변수 (Nc void 함수 에서 'n 이 c 와 같다면?' 인 코드, Nc void 함수는 cn[] 배열에 방금 전 코드가 될때까지 반복하여 r-- 값 계산 후 배열에 값 저장.
n=Rc(r,r2,c,m); //Rc void 함수 실행.
m=1; //m 값 초기화.
c=Nf(n,n2,m); //Nf void 함수 실행.
m=1; //m 값 초기화.
dev(m,m1); //cr 분모 배열 약분, cr 분모 배열 약분 후 cn 분자 배열 1로 바꾸기
}
return 0;
}



