当前位置: 代码迷 >> 综合 >> UVA-12034(数论)(组合数公式+递推)
  详细解决方案

UVA-12034(数论)(组合数公式+递推)

热度:64   发布时间:2024-01-26 22:06:01.0

C(n,m)=C(n-1,m-1)+C(n-1,m)
杨辉三角,古人诚不欺我。orz
递推式。ans[i]=c[i]j]*ans[i-j], j=1,2,3,4…i;
自己写代码还是要更加严谨些。
附上AC代码

#include <bits/stdc++.h>
#define FOPI freopen("INPUT.TXT", "r", stdin)
#define DOPI freopen("OUTPUT.TXT", "w", stdout)
using namespace std;
typedef long long int ll;
const int ind=0x3f3f3f3f,N=1e6+10;
int inlld=0x3f3f3f3f3f3f3f3f,mod=10056;
ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}
ll lcm(ll a,ll b){return a*b/gcd(a,b);}
typedef pair<int,int> p;
ll c[1100][1100],ans[1100];
int main()
{ios::sync_with_stdio(false);
// DOPI;int t,num=1,n;cin>>t;for(int i=1;i<=1000;i++){c[i][0]=c[i][i]=1;}for(int i=1;i<=1000;i++){for(int j=1;j<i;j++){c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;}}ans[1]=1;ans[0]=1;for(int i=2;i<=1000;i++){for(int j=1;j<=i;j++){ans[i]=(ans[i]+(c[i][j]*ans[i-j])%mod)%mod;}}while(t--){cin>>n;cout << "Case " << num++ << ": " << ans[n]<<endl;}return 0;
}