15陝西省賽——數學題——n維空間切d刀共能分紅多少份???

秦總給我看的題。。。ios

題目的大意如題目所示,再次感受數學的薄弱。。。0<n<100000,0<d<1000000,首先dp[n][d] = dp[n][d-1] + dp[n-1][d-1]],這個遞推式很好推,而後複雜度是o(n*d)確定過不了的,而後就是兩個方向搞了,一個就是優化,還有一個就是直接通項,一開始先是搞了一頓通項,結果表示這個好像有點難度,而後再搞優化,可不能夠把d二分來搞,這個時候每一項還要再加上一塊,想了想仍是搞不定。而後再回頭搞通項,由於是考試前一天搞的,搞了一會就直接百度有沒有通項了,(orz那些在5個小時裏面可以推出通項的大牛。。。)附上連接 http://www.zhihu.com/question/29837521優化

點擊打開連接ui

當n >= d時,dp[n][d] = 2^d,這個比較好理解。spa

n < d時,這個公式的推導過程看知乎大神的回答就行了,由於MOD = 10e9+7,是一個質數,因此求逆元的時候直接上線性的作法。code


而後這道題就解決了。。。get

附上代碼:數學

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#define FOR(i,x,y)  for(int i = x;i < y;i ++)
#define IFOR(i,x,y) for(int i = x;i > y;i --)
#define ll  long long
#define N   111111
#define D   1111111
#define MOD 1000000007

using namespace std;

ll c[N],mu[N];
ll n,d;

ll quickpow(ll a,ll n,ll m){
    ll ans=1;
    while(n){
        if(n&1) ans = (ans*a)%m;
        a = (a*a)%m;
        n>>=1;
    }
    return ans;
}

void ex_gcd(ll a,ll b,ll& d,ll& x,ll& y){
    if(!b)  {d = a;x = 1;y = 0;return;}
    ex_gcd(b,a%b,d,y,x);
    y -= x*(a/b);
}
/**
ll inv(ll a,ll n){
    ll d,x,y;
    ex_gcd(a,n,d,x,y);
    return d == 1 ? (x+n)%n : -1;
}

void init(){
    FOR(i,1,N){
        mu[i] = inv(i,MOD);
    }
}
**/
//在線性時間內求質數的逆元
void init(){
    mu[1] = 1;
    FOR(i,2,N){
        mu[i] = mu[MOD%i] *(MOD-MOD/i)%MOD;
    }
}

void C(){
    c[0] = 1;
    FOR(i,1,n+1){
        ll tem = (d+1-i)*mu[i]%MOD;
        c[i] = (tem*c[i-1]) % MOD;
    }
}

ll solve(){
    ll res = 0;
    FOR(i,0,n+1){
        res += c[i];
        res %= MOD;
    }
    return res;
}

int main()
{
    freopen("test.in","r",stdin);
    int t,tCase = 0;
    scanf("%d",&t);
    init();
    while(t--){
        printf("Case #%d: ",++tCase);
        scanf("%lld%lld",&n,&d);
        ll ans = 0;
        if(n >= d){
            ans = quickpow(2,d,MOD);
        }
        else{
            C();
            ans = solve();
        }
        printf("%lld\n",ans);
    }
    return 0;
}


版權聲明:本文爲博主原創文章,未經博主容許不得轉載。string

相關文章
相關標籤/搜索