HDU4704-杭电多校第十场1009签到
2013-08-22 21:48
309 查看
题目:题目链接
题意:
最后的实质就是求2的n-1次方
费马小定理:
2^N == 2^(N%1e9+6) % 1e9+7;
直接套公式:
签到:
虽说是签到题,也比较水啊.....
题意:
最后的实质就是求2的n-1次方
费马小定理:
2^N == 2^(N%1e9+6) % 1e9+7;
直接套公式:
签到:
#include <iostream> #include <cstdio> #include <string> #include <string.h> #include <map> #include <vector> #include <cstdlib> #include <algorithm> #include <cmath> #include <queue> #include <set> #include <stack> #include <functional> #include <fstream> #include <sstream> #include <iomanip> #include <numeric> #include <cassert> #include <bitset> #include <stack> #include <ctime> #include <list> #define max3(a,b,c) (max(a,b)>c?max(a,b):c) #define min3(a,b,c) (min(a,b)<c?min(a,b):c) #define mem(a,b) memset(a,b,sizeof(a)) using namespace std; int gcd(int n,int m) { if(n<m) swap(n,m); return n%m==0?m:gcd(m,n%m); } int lcm(int n,int m) { if(n<m) swap(n,m); return n/gcd(n,m)*m; } const int N = 100001; int prime ; struct node { int x, y; }; bool cmp(const node & a, const node & b) { return a.x > b.x; } void getPrime(); void bash(); void wzf(); void SG(); const __int64 MODM = 1e9 + 7; const __int64 MODZ = 1e9 +6; __int64 QuickMod(__int64 a,__int64 b) { __int64 r = 1; while(b) { if(b&1) r = (r*a)%MODM; a = (a*a)%MODM; b >>= 1; } return r; } char num ; int main() { while(scanf("%s", num) != EOF) { int len = strlen(num); __int64 ans = 0; for(int i = 0; i < len; ++i) { ans = ans*10 + (num[i]-'0'); ans %= MODZ; } printf("%I64d\n", QuickMod(2, ans-1)); } return 0; } void getPrime() { memset(prime, 0, sizeof(prime)); prime[0] = 1; prime[1] = 1; for(int i = 2; i < N; ++i) { if(prime[i] == 0) { for(int j = i+i; j < N; j+=i) prime[j] = 1; } } } void bash(int n, int m) { if(n%(m+1) != 0) printf("1\n"); else printf("0\n"); } void wzf(int n, int m) { if(n > m) swap(n, m); int k = m-n; int a = (k * (1.0 + sqrt(5.0))/2.0); if(a == n) printf("0\n"); else printf("1\n"); } int numsg ; void SG(int n) { int sum = 0; for(int i=0; i < n; i++) { scanf("%d",&numsg[i]); sum ^= numsg[i]; } if(sum == 0) printf("No\n"); else { printf("Yes\n"); for(int i = 0; i < n; i++) { int s = sum ^ numsg[i]; if(s < num[i]) printf("%d %d\n", numsg[i], s);//从有num[i]个石子的堆后剩余s个石子 } } }
虽说是签到题,也比较水啊.....
相关文章推荐
- 2017 杭电多校联赛第二场 1009 TrickGCD(容斥原理) HDU 6053
- hdu 4704 Sum/杭电2013年多校第十场1009 快速幂+循环
- 2013 多校第十场 1009 sum 欧拉定理 快速幂 高精度
- HDU4705-杭电多校第十场1010
- 2013 多校第十场 1009 sum 欧拉定理 快速幂 高精度
- 2013 多校第十场 1009 sum 欧拉定理 快速幂 高精度
- HDU 4627 The Unsolvable Problem 杭电多校联赛第三场1009 数学题
- HDU4699-杭电多校第十场1004
- 多校第十场1009 CRB and String题解
- 多校第十场 1009 Sum
- 2016 多校3 1009 Palindrome Bo 回文串dp+优化
- hdu5325&15年杭电多校集训(3) j题
- HDU 4869 Turn the pokers (2014多校联合训练第一场1009) 解题报告(维护区间 + 组合数)
- HDU 5351 MZL's Border (多校联合第5场1009)
- hdu 6045 多校签到题目
- 2017 第十场多校训练 HDU 6181 Two Paths 次短路+Dijkstra
- HDU 5361 In Touch (2015 多校6 1009 最短路 + 区间更新)
- hdu5335&15年杭电多校集训(4)i题(bfs+策略)
- hdu_5551_多校联赛5_1009
- 杭电ACM 1009 FatMouse' Trade