2015-07-05 66 views
-1

我正在解決一個簡單的問題,發現n的n次冪,它適用於n的較低冪,但是當我嘗試做更高的權力時失敗,而且我的問題被問到必須要%10^9 + 7才能縮小尺寸。 如果你可以告訴我我要去哪裏錯。它提供了一個大的值的錯誤

#include <cmath> 
#include <cstdio> 
#include <vector> 
#include <iostream> 
#include <algorithm> 
using namespace std; 
long long int pro=1; 

long long int func(int n) 
{ 
if(n!=1) 
{ pro=pro%1000000007; 
    pro=(2*func(n-1)); 
return pro; 
} 

return 1; 
} 

int main() 
{ 



    pro=1; 
    long long int n=555555; 

    long long int x; 
    if(n!=1) 
    x=func(n); 
    else 
     x=1; 

    cout<<x<<endl; 


    } 

return 0; 
    } 

回答

0
if(n!=1){ 
    x=func(n); 
}else{ 
     x=1; //this is incorrect, you should return 2. 
} 

long long int func(int n) 
    { 
     if(n!=1) 
     { 
     pro=(2*(func(n-1)%1000000007))%1000000007; 
     return pro; 
     } 
     else return 2; 
    }