Korotkodul

СПБГУ_J_100_баллов

Dec 29th, 2021 (edited)
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <string>
  7. #include <stack>
  8. #include <set>
  9. #include <map>
  10. #define pii pair <int,int>
  11. using namespace std;
  12. using ll = long long;
  13. using ld = long double;
  14. void cv(vector <ll> &v){
  15.     for (auto x: v) cout<<x<<' ';
  16.     cout<<"\n";
  17. }
  18.  
  19. ll inf = 1e9 + 7;
  20. vector <ll> lvl; //стпеень 2-ки
  21.  
  22. ll S(ll b1, ll q, ll n){
  23.     //return (b1 - b1 * pow(q, n)) / (1 - q);
  24.     //ll bin = (pow(q, n) - 1);
  25.     ll bin = lvl[n] - 1;//уже с остатком
  26.     bin %= inf;
  27.     ll r = (b1 % inf) * bin;
  28.     r %= inf;
  29.     return r;
  30. }
  31.  
  32. int main()
  33. {
  34.     /*ios::sync_with_stdio(0);
  35.     cin.tie(0);
  36.     cout.tie(0);*/
  37.     ll n;
  38.     cin>>n;
  39.     n++;
  40.     lvl.resize(n+1);
  41.     lvl[0] = 1;
  42.     for (ll i = 1; i <= n; ++i){
  43.         lvl[i] = lvl[i-1] * 2 % inf;
  44.     }
  45.     //cv(lvl);
  46.     vector <ll> dp(n+1);
  47.     dp[1] = 1;
  48.     ll b1, q=2, num;
  49.     for (ll i = 2; i <= n;++i){
  50.         //b1 = pow(2, n - i);
  51.         b1 = lvl[n-i];
  52.         dp[i] = dp[i-1] * ( S(b1, q, i) % inf );
  53.         dp[i] %= inf;
  54.     }
  55.     //cv(dp);
  56.     cout<<dp[n-1]; //подкорректировать -- сделать так, чтобы
  57. }
  58.  
Add Comment
Please, Sign In to add comment