Advertisement
Guest User

Shashank and List Attempt

a guest
Aug 14th, 2016
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. vector<int> getExponents(vector<int> arr) {
  7.     std::vector<int> ret;
  8.     std::vector<int> group; // indexes to be added
  9.     group.reserve(arr.size());
  10.  
  11.     for (int length=1; length <= arr.size(); ++length) {
  12.         group.resize(length);
  13.  
  14.         for (int i=0; i < group.size(); ++i) { // initialize group
  15.             group[i] = i;
  16.         }
  17.  
  18.         bool stop = false;
  19.         while (!stop)  {// until list is exhausted
  20.             // add sum ()
  21.             ret.push_back(0);
  22.             for (int i=0; i < group.size(); ++i) {
  23.                 ret.back() += arr[group[i]];
  24.             }
  25.  
  26.             // iterate group
  27.             group.back()++; // increase back
  28.             if (group.back() >= arr.size()) { // if back index points too far
  29.                 // move first index up and re-init
  30.                 group[0]++;
  31.  
  32.                 if (group[0] >= arr.size()) // if first index is invalid, goto length loop (b/c size should be 1)
  33.                     break;
  34.  
  35.                 // re-init
  36.                 for (int n=1; n < group.size(); ++n) { // adjust past first
  37.                     group[n] = group[n-1] + 1;
  38.  
  39.                     if (group[n] >= arr.size()) { // if index is invalid (size is too big), goto length loop (b/c group.size() may be < arr.size())
  40.                         stop = true;
  41.                         break;
  42.                     }
  43.                 }
  44.             }
  45.         }
  46.     }
  47.  
  48.     return ret;
  49. }
  50.  
  51. int main () {
  52.     unsigned T;
  53.     cin >> T;
  54.        
  55.     vector<int> arr;
  56.     arr.resize(T);
  57.    
  58.     for (int i=0; i < T; ++i)
  59.         cin >> arr[i];
  60.    
  61.     vector<int> exponents = getExponents(arr);
  62.  
  63.     int sum =0;
  64.     for (int& n : exponents) {
  65.         sum += fmod(exp2(n), (pow(10,9) + 7));
  66.     }
  67.  
  68.     std::cout << sum;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement