HDU 5363 Key Set
来源:互联网 发布:linux进去数据库命令 编辑:程序博客网 时间:2024/05/27 00:31
HDU 5363 Key Set
Problem Description
soda has a 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 Input
4
1
2
3
4
Sample Output
0
1
3
7
快速幂取模问题
题意:给出一个数n,表示一个集合中有n个数1-n;找出这个集合的非空子集的个数,并且这些非空子集中所有元素相加为偶数。 大家都知道n个数的非空子集有2的n次方减1个,那么给原集合中1剔除来,剩下的集合就有2的n-1次方-1个。那么剩下的集合中所有元素相加之和为奇数的加上1就为偶数了,剩下为偶数的就不加1.所以结果就是2的n次方-1。由于这个数据非常大,就要用快速幂。 快速幂的作用:减少计算时间。在计算中就可以取摸。取摸原理假设 m=x*y;那么 m%n=((x%n)*(y%n))%n;
#include<iostream>#include <algorithm>#include <cstdio>#include <string.h>#include <cstring>using namespace std;const long long N = 1000000007;typedef long long ll;ll fun(int n, int m, int x){ if ( m == 0) return 1; if (m == 1) return n%x; ll t = fun(n, m/2, x); t = t * t % x; if ( m & 1) { t = t * n % x; } return t;}int main(){#ifndef ONLINE_JUDGE freopen("1.txt","r",stdin); #endif int t; long long n; cin >> t; while(t--) { cin >> n; cout << (fun(2, n-1, N) - 1 + N)%N << endl; } return 0;}
0 0
- HDU 5363 Key Set
- HDU 5363 Key Set
- hdu 5363 Key Set
- HDU 5363 Key Set
- HDU 5363 Key Set
- HDU 5363 Key Set
- HDU - 5363 Key Set
- hdu 5363 Key Set
- hdu 5363 Key Set 矩阵快速幂
- HDU 5363 Key Set(快速幂)
- hdu 5363 Key Set (快速幂取模)
- HDU 5363 Key Set(快速幂取余)
- Hdu 5363 Key Set【快速幂运算】
- hdu 5363 Key Set(水)
- hdu 5363 Key Set 简单题
- HDU 5363-K - Key Set-递推
- hdu 5363 Key Set【快速幂求余】
- HDU 5363 Key Set(快速幂)
- 职业规划
- 互联网+的困局
- HDU 5414
- Attribute在.net编程中的应用(一)
- Attribute在.net编程中的应用(二)
- HDU 5363 Key Set
- Attribute在.NET编程中的应用(三)
- LintCode 最长单词
- Attribute在.NET编程中的应用(四)
- Attribute在.NET编程中的应用(五)
- 8.20学习总结
- 8.19学习总结
- HDOJ1175 连连看(bfs)
- Arcengine制图表达的一些理解