zoukankan      html  css  js  c++  java
  • 51nod1228 序列求和(自然数幂和)

    UVA766 Sum of powers类似,见http://www.cnblogs.com/IMGavin/p/5948824.html

    由于结果对MOD取模,使用逆元

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<map>
    #include<queue>
    #include<vector>
    #include<cmath>
    #include<utility>
    using namespace std;
    typedef long long LL;
    const int N = 2016, INF = 0x3F3F3F3F, MOD = 1000000007;
    
    LL bo[N];
    LL cm[N][N], inv[N];
    
    void init(){
        inv[1] = 1;
        for(int i = 2; i < N; i++){
        	inv[i] = (MOD - MOD / i ) * inv[MOD % i] % MOD;
        }
    
        memset(cm, 0, sizeof(cm));
        cm[0][0] = 1;
        for(int i = 1; i < N; i++){
            cm[i][0] = 1;
            for(int j = 1; j <= i; j++){
                cm[i][j] = (cm[i - 1][j - 1] + cm[i - 1][j]) % MOD;
            }
        }
    
        bo[0] = 1;
        for(int i = 1; i < N; i++){
            bo[i] = 0;
            for(int j = 0; j < i; j++){
            	bo[i] += cm[i + 1][j] * bo[j] % MOD;
            	bo[i] %= MOD;
            }
            bo[i] = (-bo[i] * inv[i + 1] % MOD + MOD) % MOD;
        }
        bo[1] = inv[2];
    }
    
    LL PowMod(LL a,LL b,LL MOD){//快速幂
        LL ret=1;
        while(b){
            if(b&1) ret=(ret*a)%MOD;
            a=(a*a)%MOD;
            b>>=1;
        }
        return ret;
    }
    
    LL solve(LL n, LL m){
    	LL ans = 0;
    	for(LL k = 0; k <= m; k++){
    		ans += (cm[m + 1][k] * bo[k] % MOD) * PowMod(n % MOD, m + 1 - k, MOD) % MOD;
    		ans %= MOD;
    	}
    	ans = ans * inv[m + 1] % MOD;
    	return ans;
    }
    
    int main(){
        init();
        int t;
        cin >> t;
        while(t--){
            LL n, k;
            scanf("%I64d %I64d", &n, &k);
            printf("%I64d
    ", solve(n, k));
        }
        return 0;
    }
    

      

  • 相关阅读:
    滑雪(dp好题)
    田忌赛马
    反质数(Antiprimes)
    LCA-倍增法(在线)
    二模 (2) day2
    Spring Integration
    [转载] Spring MVC
    收藏夹
    Linux profile File
    git merge 与 rebase 的区别
  • 原文地址:https://www.cnblogs.com/IMGavin/p/5950701.html
Copyright © 2011-2022 走看看