HDU 5363 快速幂

    xiaoxiao2022-07-13  190

    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 (1≤T≤105), indicating the number of test cases. For each test case:

    The first line contains an integer n (1≤n≤109), the number of integers in the set. Output For each test case, output the number of key sets modulo 1000000007. Sample Input4 1 2 3 4 Sample Output 0 1 3 7 对于一个有n的元素的集合,组成的非空子集有2^n - 1个,其中和为奇数的个数比和为偶数的个数多一个。注意利用快速幂函数,不要超过了long long。所以答案应为2^(n-1)-1.

    代码如下: #include #include #define ll long long #define mod 1000000007 using namespace std; ll t,n; int main() {  cin>>t;  while(t–)  {   ll sum=1,i=2;   cin>>n;   n=n-1;   n=n%mod;   while(n)   {    if(n&1)    {     sum=(sumi)%mod;    }    i=(ii)%mod;    n=n/2;   }   cout<<sum-1<<endl;   }  return 0; }

    最新回复(0)