http://poj.org/problem?id=1942
View Code
1 #include<stdio.h> 2 int main() 3 { 4 __int64 s,n,m,i,j,k; 5 while(scanf("%I64d%I64d", &n,&m)!=EOF) 6 { 7 if(n==0&&m==0) 8 break; 9 s = 1; 10 if(n>m) 11 k = m; 12 else 13 k = n; 14 n+=m; 15 for(j = 1 ; j <= k ; j++,n--) 16 { 17 s =s *n/j; 18 } 19 printf("%I64d\n",s); 20 } 21 return 0; 22 }
View Code
1 __int64 C(__int64 m, __int64 n){ 2 if(m > n - m) m = n - m; 3 __int64 ans = 1, cou = m; 4 while(cou --){ 5 ans *= n --; 6 while(ans % m == 0 && m > 1) 7 ans /= m --; 8 } 9 return ans; 10 }
递推模板
View Code
1 void cn() 2 { 3 for(int i=0;i<=32;i++) 4 for(int j=0;j<=i;j++) 5 if(!j || i==j) 6 c[i][j]=1; 7 else 8 c[i][j]=c[i-1][j-1]+c[i-1][j]; 9 }