zoukankan      html  css  js  c++  java
  • hdu 4602 Partition

    http://acm.hdu.edu.cn/showproblem.php?pid=4602

    输入 n 和 k

    首先 f(n)中k的个数 等于 f(n-1) 中 k-1的个数

    最终等于 f(n-k+1) 中 1 的个数

    舍 s(n) = f(n) + f(n-1) + ....+ f(1)

    则 f(n) = s(n) - s(n-1)

    由于 s(n) = s(n-1) + 2^(n-2) + s(n-1) = 2*(s(n-1)) + 2^(n-2)

                  = 2^(n-1) + (n-1)*2^(n-2)

           = (n+1)*2^(n-2)

    代码:

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<cmath>
    #include<set>
    #include<map>
    #include<stack>
    #include<vector>
    #include<algorithm>
    #include<queue>
    #include<stdexcept>
    #include<bitset>
    #include<cassert>
    #include<deque>
    #include<numeric>
    
    using namespace std;
    
    typedef long long ll;
    typedef unsigned int uint;
    const double eps=1e-12;
    const int INF=0x3f3f3f3f;
    const ll MOD=1000000007;
    ll power(ll x,ll y)
    {
        ll tmp=1;
        while(y)
        {
            if((y&1))
            tmp=(tmp*x)%MOD;
    
            x=(x*x)%MOD;
            y=y>>1;
        }
        return tmp;
    }
    int main()
    {
        //freopen("data.in","r",stdin);
        int T;
        cin>>T;
        while(T--)
        {
            ll n,m;
            cin>>n>>m;
            ll k=n-m+1;
            if(k<=0)
            {
                cout<<"0"<<endl;
                continue;
            }
            if(k==1)
            {
                cout<<"1"<<endl;
                continue;
            }
            if(k==2)
            {
                cout<<"2"<<endl;
                continue;
            }
            ll w1=(k+1)*power(2,k-2)%MOD;
            --k;
            ll w2=(k+1)*power(2,k-2)%MOD;
            cout<<(w1-w2+MOD)%MOD<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    js技巧大全
    DOM
    网页页面跳转几种方法
    JavaScript中创建对象的几种方式
    web本地存储-UserData
    图片预加载
    闭包
    JavaScript高级编程学习笔记(第三章之一)
    .net core 部署到ubuntu
    fiddler autoresponder 动态修改响应内容
  • 原文地址:https://www.cnblogs.com/liulangye/p/3209381.html
Copyright © 2011-2022 走看看