HDU 5363 Key Set (快速幂)

来源:互联网 发布:淘宝拉帮结派流量协议 编辑:程序博客网 时间:2024/05/17 08:03

Key Set

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1709    Accepted Submission(s): 905


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 ofS are key set.
 

Input
There are multiple test cases. The first line of input contains an integerT(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
41234
 

Sample Output
0137
 

Author
zimpha@zju
 

Source
2015 Multi-University Training Contest 6
 

Recommend
wange2014   |   We have carefully selected several similar problems for you:  5746 5745 5744 5743 5742 
 

题意:一个集合元素为1到n,求这个集合有多少个非空子集,并且子集的元素之和为偶数

思路:2 ^ ( n - 1) -1;

纠结为什么我用( 2 ^ n ) / 2 -1.就不对.

#include<stdio.h>__int64 mod(__int64 a,__int64 b,__int64 c){__int64 res=1%c;__int64 t=a%c;while(b){if(b%2){res=res*t%c;}t=t*t%c;    b=b/2;}return res;}int main(){__int64 t,n;scanf("%I64d",&t);while(t--){scanf("%I64d",&n);__int64 ans=mod(2,n-1,1000000007);printf("%I64d\n",ans-1);}return 0;}


0 0
原创粉丝点击