规律 欧拉定理:
找规律 2^n-1 ,n 很大用欧拉定理
Sum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1465 Accepted Submission(s): 622
Problem Description
Sample Input
2
Sample Output
2 Hint 1. For N = 2, S(1) = S(2) = 1. 2. The input file consists of multiple test cases.
Source
2013 Multi-University Training Contest 10
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long int LL; const LL mod=1e9+7; const LL phi=1e9+6; char str[200000]; LL quickpow(LL x) { if(x==0LL) return 1LL; LL e=2,ret=1; while(x) { if(x%2) ret=(ret*e)%mod; e=(e*e)%mod; x/=2LL; } return ret; } int main() { while(scanf("%s",str)!=EOF) { int len=strlen(str); /// N - 1 if(str[len-1]>'0') { str[len-1]--; } else { int p=len-1; while(str[p]=='0') { str[p]='9'; p--; } str[p]--; } LL ret=0; for(int i=0;i<len;i++) { ret=ret*10LL+str[i]-'0'; while(ret>=phi) ret-=phi; } cout<<quickpow(ret)<<endl; } return 0; }
时间: 2024-10-28 23:02:01