227
Cerința
Se dă un număr natural N
. Să se calculeze expresia:
E=(20+21+22+23+…+2N)%1000000007
unde x % y
reprezintă restul împărţirii lui x
la y
.
Date de intrare
Fișierul de intrare sume1.in
conține pe prima linie numărul N
.
Date de ieșire
Fișierul de ieșire sume1.out
va conține pe prima linie rezultatul expresiei E
.
Restricții și precizări
1 ≤ N ≤ 10
17
1000000007
este număr prim.- Pentru 30% din teste,
N ≤ 10
6
Exemplul 1
sume1.in
4
sume1.out
31
Exemplul 2
sume1.in
9
sume1.out
1023
#include <bits/stdc++.h> using namespace std; ifstream cin("sume1.in"); ofstream cout("sume1.out"); long long int putere(int x , long long int n , int mod) { long long int val; if(n == 1) return x; else { val = putere(x , n/2 , mod); if(n % 2 == 0) return val * val % mod; else return val * val % mod * 2 % mod; } } int main() { long long int n; cin >> n; cout << putere(2 , n + 1 , 1000000007) - 1; return 0; }
Comentarii