标签:
刚开始的思路
二项式系数C(n, k)满足下面的要求:
1 #include <stdio.h> 2 #include <iostream> 3 using namespace std; 4 int zuhe(int n,int k) 5 { 6 int *result = new int[n]; 7 for(int i=1;i<=n;i++) 8 { 9 result[i] = 1; 10 for(int j=i-1;j>=1;j--) 11 { 12 result[j] = result[j-1]+result[j]; 13 } 14 result[0] = 1; 15 } 16 return result[k]; 17 } 18 int main() 19 { 20 int t; 21 scanf("%d",&t); 22 while(t--) 23 { 24 int a,b; 25 scanf("%d%d",&a,&b); 26 if(b>a) 27 { 28 printf("0\n"); 29 continue; 30 } 31 printf("%d\n",zuhe(a,b)); 32 } 33 return 0; 34 }
可以这样:
1 #include<iostream> 2 using namespace std; 3 int c[31][31]; 4 int main() 5 { 6 int i,j; 7 for(i=1;i<31;i++) 8 {c[i][0]=1;c[i][1]=i;} 9 for(i=2;i<31;i++) 10 for(j=2;j<=i;j++) 11 c[i][j]=c[i-1][j]+c[i-1][j-1]; 12 int t,n,m; 13 while(scanf("%d",&t)!=EOF) 14 { 15 while(t--) 16 { 17 scanf("%d%d",&n,&m); 18 printf("%d\n",c[n][m]); 19 } 20 } 21 return 0; 22 }
之后通过了解:
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int main(void) 5 { 6 int m,n,t; 7 long long sum; 8 cin>>t; 9 while(t--) 10 { 11 cin>>n>>m; 12 sum=1; 13 for(int i=1;i<=m;i++) 14 { 15 sum*=n--; 16 sum/=i; 17 } 18 printf("%lld\n",sum); 19 } 20 return 0; 21 }
标签:
原文地址:http://www.cnblogs.com/wangmengmeng/p/4770681.html