HDU1292 i个不同元素分成j堆的分法
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <cstdlib> 6 #include <algorithm> 7 #include <vector> 8 #include <stack> 9 #include <queue> 10 #include<cassert> 11 #include<set> 12 using namespace std ; 13 #ifdef DeBUG 14 #define bug assert 15 #else 16 #define bug // 17 #endif 18 19 int main() 20 { 21 #ifdef DeBUG 22 freopen("C:\\Users\\Sky\\Desktop\\1.in","r",stdin); 23 #endif 24 25 __int64 a[100][100]; 26 a[0][0]=1; 27 for(int i=1;i<100;i++)//将i个不同的元素分成j堆有多少种情况,都在这了 28 { 29 for(int j=1;j<100;j++) 30 { 31 a[i][j]=a[i-1][j]*j+a[i-1][j-1]; 32 } 33 } 34 int T; 35 scanf("%d",&T); 36 while(T--) 37 { 38 int n; 39 __int64 sum=0; 40 scanf("%d",&n); 41 for(int i=1;i<=n;i++) 42 sum+=a[n][i]; 43 printf("%I64d\n",sum); 44 } 45 46 return 0; 47 }
对应OJ 1292
原来是斯特林数