• hdu 5363 组合数学 快速幂


    Time Limit: 2000/1000 MS (Java/Others)  

    Memory Limit: 131072/131072 K (Java/Others)


    Problem Description
    soda has a set S with n integers {1,2,,n}. A set is called key set if the sum of integers in the set is an even number. He wants to know how many nonempty subsets of S are key set.
     
    Input
    There are multiple test cases. The first line of input contains an integer T (1T105), indicating the number of test cases. For each test case:

    The first line contains an integer n (1n109), the number of integers in the set.
     
    Output
    For each test case, output the number of key sets modulo 1000000007.
     
    Sample Input
    4 1 2 3 4
     
    Sample Output
    0 1 3 7
     
    Author
    zimpha@zju
     
    Source
     
     
     
     
     
     
     
     
    题意:给出一个数n,则有一个集合set={1,2,3,4,...,n}
    问这个集合set有多少个非空子集,使得子集里面所有元素的和为偶数
     
    我们知道(a+b)^n=C(n,0)a^0*b^n...
    令a=b=1,得:2^n=C(n,0)+C(n,1)+C(n,2)+...+C(n,n-1)+C(n,n)
    令a=1,b=-1,得:0=C(n,0)-C(n,1)+C(n,2)-C(n,3)+...-C(n,n-1)+C(n,n)
    则有:C(n,0)+C(n,2)+..+C(n,n)=C(n,1)+C(n,3)+...+C(n,n-1)=2^(n-1)
     
     
    对于给出的m,
    当m=2*n时,有n个偶数,n个奇数,偶数可以选择0,1,2,3个等,奇数可以选择0,2,4,6个等
    写出组合式,化简得:ans=2^(m-1)-1
    -1是因为要减去空集的情况
    当m=2*n-1时,同样化简可得:ans=2^(m-1)-1
     
    则:ans=2^(m-1)-1
    利用快速幂即可求。
     
     
     
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    #define ll long long
    
    const int mod=1e9+7;
    
    ll quick_pow(ll n)
    {
        ll ret=1;
        ll x=2;
        while(n){
            if(n&1)
                ret=ret*x%mod;
            x=x*x%mod;
            n>>=1;
        }
        return ret;
    }
    
    int main()
    {
        int test;
        scanf("%d",&test);
    
        while(test--){
            ll n;
            scanf("%I64d",&n);
            printf("%I64d
    ",quick_pow(n-1)-1);
        }
        return 0;
    }
     
  • 相关阅读:
    Photoshop CC 与前端那些事
    gulp入門指南
    谈谈css左右等高的几个方法
    angularjs给Model添加拦截过滤器,路由增加限制,实现用户登录状态判断
    前端自动化工具
    React Router
    Sublime Text 3 常用插件安装
    c++ primer学习指导(13)--1.6书店程序
    c++ primer学习指导(12)--1.5.2初识成员函数
    c++ primer学习指导(11)--1.5.1Sales_item类
  • 原文地址:https://www.cnblogs.com/-maybe/p/4808238.html
Copyright © 2020-2023  润新知