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 multiple test cases. The first line of input contains an integer $T$ $(1 \le T \le 10^5)$, indicating the number of test cases. For each test case:

The first line contains an integer $n$ $(1 \le n \le 10^9)$, 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

 1 #include<cstdio>
 2 using namespace std;
 3
 4 const long long int mod=1000000007;
 5
 6 void quickmod(int a,int b,long long n)
 7 {
 8     long long res=1,temp=a%n;
 9     while(b)
10     {
11         if(b&1)res=(res*temp)%n;
12         temp=(temp*temp)%n;
13         b>>=1;
14     }
15     printf("%lld\n",res-1);
16 }
17
18 int main()
19 {
20     int t,n;
21     scanf("%d",&t);
22     while(t--)
23     {
24         scanf("%d",&n);
25         quickmod(2,n-1,mod);
26     }
27     return 0;
28 }
时间: 2024-08-29 11:18:29

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

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)+.