hdoj 4704 Sum
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704
解题思路:容易求得 S(1)+S(2)+···+S(N)=2N-1 , 则 (S(1)+S(2)+···+S(N))%1000000007=2N-1%1000000007.
记 Mod=1000000007, 由 Euler-Fermat 定理有:2Mod-1≡1 (mod Mod), 从而有 2N-1≡2(N-1) mod (Mod-1) (mod Mod).
1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: hdoj 4704 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include <algorithm> 7 #include <iostream> 8 #include <iterator> 9 #include <iomanip> 10 #include <cstring> 11 #include <cstdlib> 12 #include <string> 13 #include <vector> 14 #include <cstdio> 15 #include <cctype> 16 #include <cmath> 17 #include <queue> 18 #include <stack> 19 #include <list> 20 #include <set> 21 #include <map> 22 using namespace std; 23 24 /////////////////////////////////////////////////////////////////////////// 25 typedef long long LL; 26 const double PI=acos(-1.0); 27 28 const int x4[]={-1,0,1,0}; 29 const int y4[]={0,1,0,-1}; 30 const int x8[]={-1,-1,0,1,1,1,0,-1}; 31 const int y8[]={0,1,1,1,0,-1,-1,-1}; 32 33 typedef int T; 34 T max(T a,T b){ return a>b? a:b; } 35 T min(T a,T b){ return a<b? a:b; } 36 /////////////////////////////////////////////////////////////////////////// 37 38 /////////////////////////////////////////////////////////////////////////// 39 //Add Code: 40 const LL Mod=1000000007; 41 /////////////////////////////////////////////////////////////////////////// 42 43 int main(){ 44 /////////////////////////////////////////////////////////////////////// 45 //Add code: 46 char c; 47 while((c=getchar())!=EOF){ 48 LL ans=1,a=2,n=c-'0'; 49 while((c=getchar())!='\n') n=(n*10+c-'0')%(Mod-1); 50 if(n==0) n=Mod-1; 51 n--; 52 while(n){ 53 if(n&1) ans=ans*a%Mod; 54 a=a*a%Mod; 55 n>>=1; 56 } 57 printf("%I64d\n",ans); 58 } 59 /////////////////////////////////////////////////////////////////////// 60 return 0; 61 } 62 63 /////////////////////////////////////////////////////////////////////////// 64 /* 65 Testcase: 66 Input: 67 2 68 Output: 69 2 70 */ 71 ///////////////////////////////////////////////////////////////////////////
posted on 2013-08-25 00:02 SCNU20102200088 阅读(184) 评论(0) 编辑 收藏 举报