Code :
#include <cstdio>
const int p = 1e9 +7;
inline unsigned long long Pow(int x, int n) {
if(n == 0) return 1;
else {
int tmp = Pow(x,n/2);
if(n % 2 == 0) return (tmp * tmp) % p;
if(n % 2 == 1) return ((tmp * tmp) % p * x) % p;
}
}
const int M = 1e7 + 7;
unsigned long long ans[M];
int main() {
int n; scanf("%d", &n);
ans[1] = 1;
for(int i = 2; i <= n; i ++)
ans[i] = ((ans[i - 1] % p) * ((Pow(2, i) - 1) % p)) % p;
ans[n] %= p;
printf("%llu",ans[n]);
return 0;
}
式子推出来了,但只过了前两个 Sub。