function get_combination(N,R) result(res) integer*8::i,j,res integer*8,intent(in)::N,R res = 1 j = N do i=1, R res = (res*j)/i j = j - 1 end do return end function get_combination program main implicit none interface function get_combination(N,R) result(res) integer*8::i,j,res integer*8,intent(in)::N,R end function get_combination end interface integer*8::x,res,sum,n read *,x if(x.gt.31) then print '(i0," ",i0)',0,0 return else if(x.eq.0) then print '(i0," ",i0)',1,0 return end if n = 31 res = get_combination(n,x) n = 30 x = x-1 if(x.gt.15) x = 30 -x sum = 2147483647_8 * get_combination(n,x) print '(i0," ",i0)',res,sum end program main