公式很容易想出来 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;
}