hdu 3003 快速幂取模

2019-04-14 12:43发布

公式很容易想出来  an = 2^( n - 1 ) + 1 然后要用到快速幂取模 在logn的时间内算出 幂 AC代码如下: #include #include #include #include using namespace std; long long DFS( long long base, long long exp, long long mod ){//快速幂取模 if( exp == 0 ){ return 1 % mod; } if( exp == 1 ){ return base % mod; } long long ans = DFS( base, exp / 2, mod ) % mod; ans = ans % mod * ans % mod; if( exp & 1 ){ ans = ans * base % mod; } return ans; } int main(){ long long ans, N; while( cin >> N && N ){ ans = DFS( 2, N - 1, N ); ans += 1; ans %= N; cout << ans << endl; } return 0; }