hdu 5363 Key Set (快速幂取模)

题意:

给你一个元素为1到n的集合,让你求有多少个非空子集,子集内的元素之和为偶数。

解析:

子集中满足元素之和为偶数那么得满足几何中的奇数必须为偶数个。

那么偶数的情况可以任意取。一个几何中有 n/2 个偶数,有 (n+1)/2个奇数。

那么最终的结果为∑n/2i=1Cin/2?∑(n+1)/2j=1Cj(n+1)/2=2n?1?1

由于结果比较大,所以要用到快速幂取摸。

my code

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll MOD = 1000000007;
int n;

ll modpow(ll a, ll k) {
    ll c = 1;
    while(k) {
        if(k & 1) c = (c*a) % MOD;
        a = (a*a) % MOD;
        k >>= 1;
    }
    return c;
}

int main() {
    int T;
    scanf("%d", &T);
    while(T--) {
        scanf("%d", &n);
        printf("%lld\n", modpow(2, n-1) - 1);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 22:31:48

hdu 5363 Key Set (快速幂取模)的相关文章

HDU 5363 Key Set(快速幂取模)

Key Set Problem Description soda has a set $S$ with $n$ integers $\{1, 2, \dots, 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 multipl

HDU 5363 Key Set(快速幂取余)

Key Set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 362    Accepted Submission(s): 238 Problem Description soda has a set S with n integers {1,2,-,n}. A set is called key set if the sum o

hdu 3221 Brute-force Algorithm(快速幂取模,矩阵快速幂求fib)

http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序,问funny函数调用了多少次. 我们定义数组为所求:f[1] = a,f[2] = b, f[3] = f[2]*f[3]......f[n] = f[n-1]*f[n-2].对应的值表示也可为a^1*b^0%p,a^0*b^1%p,a^1*b^1%p,.....a^fib[n-3]*b^fib[n-2]%p.即a,b的指数从n=3以后与fib数列

HDU - 3003 - Pupu (快速幂取模!)

Pupu Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1133    Accepted Submission(s): 445 Problem Description There is an island called PiLiPaLa.In the island there is a wild animal living in it

HDU 4945 2048(dp+快速幂取模)

题目大意:给你一个序列让你求出有多少种组合可以得到2048.结果要对998244353取余. 解题思路:求出不能满足条件的方案数,然后用总的减去不满足的然后乘上其他无关的组合方式,比如3,5这些数字是在构成2048的过程中无用的,所以乘上这些组合出来的情况. dp[i][j]表示取到第i个2^i的数,其最大的和在j*2^i至(j+1)*2^i-1的方案数. 所以有dp[i][j] += ((dp[i-1][k]+dp[i-1][k+1])*use[i][j-k/2])%mod.表示在i位置时最大

HDU 5363(2015多校6)-Key Set(快速幂取模)

题目地址:HDU 5363 题意:给你一个具有n个元素的集合S{1,2,-,n},问集合S的非空子集中元素和为偶数的非空子集有多少个. 思路:解释转自[queuelovestack的专栏]因为集合S中的元素是从1开始的连续的自然数,所以所有元素中奇数个数与偶数个数相同,或比偶数多一个.另外我们要知道偶数+偶数=偶数,奇数+奇数=偶数,假设现在有a个偶数,b个奇数,则 根据二项式展开公式 以及二项式展开式中奇数项系数之和等于偶数项系数之和的定理 可以得到上式 最后的结果还需减去 即空集的情况,因为

hdu 1452 Happy 2004 (快速幂+取模乘法逆元)

Problem Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004^X. Your job is to determine S modulo 29 (the rest of the division of S by 29).Take X = 1 for an example. The positive integer divisors of

hdu 5363 Key Set 快速幂

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 l

HDU 5363 Key Set【快速幂取模】

Key Set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1886    Accepted Submission(s): 990 Problem Description soda has a set S with n integers {1,2,-,n}. A set is called key set if the sum

HDU 5363 元素为1~n的集合有多少个子集的元素和为偶数-思维-(快速幂取模)

题意:一个集合有元素1~n,求他的子集满足这样的条件:子集的所有元素的和是偶数,问有多少个这样的子集 分析: 一个排列组合问题.元素和为偶数,那么奇数肯定要调偶数个,偶数就无所谓了,所以偶数有2^(n/2)种选法,再乘以奇数有(C((n+1)/2,0)+C((n+1)/2,2).....)种选法,再减一,除去空集,注意,上面取奇数的时候用的是(n+1)/2(这里是向下取整的除法),是综合n为偶数和n为奇数两种情况. 组合数性质:C(n,1)+C(n,3)+....=C(n,2)+C(n,4)+.