CSES - Datatähti 2018 alku - Results
Submission details
Task:Bittijono
Sender:inkeri
Submission time:2017-10-11 13:30:58 +0300
Language:C++
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:40:17: error: expected ';' before ':' token
       summa += a:
                 ^

Code

#include <bits/stdc++.h>
#include <bitset>
#include <string>
using namespace std;
typedef long long ll;

ll alijonot(ll luku, ll pituus) {
    set<ll> jonot;
    jonot.insert(1);
    ll potenssi = pow(2, pituus - 1);
    for (ll i = 0; i < pituus; i++) {
        int a = 0;
        if (luku >= potenssi) a = 1;
        set<ll>::iterator it;
        set<ll> uudetJonot;
        for (it = jonot.begin(); it != jonot.end(); ++it) {
            ll jono = *it;
            uudetJonot.insert(2 * jono + a);
        }
        jonot.insert(uudetJonot.begin(), uudetJonot.end());
        luku %= potenssi;
        potenssi /= 2;
    }
    return jonot.size() - 1;
}

int main() {
  ios_base::sync_with_stdio(false);
  ll tavoite;
  cin >> tavoite;
  ll pituus = 1;
  ll summa = 1;
  ll a = 1;
  ll b = 1;
  while (summa < tavoite) {
      pituus++;
      ll c = a;
      a += b;
      b = c;
      summa += a:
  }
  ll alku = pow(2, pituus - 1);
  ll loppu = 2*alku;
  set<string> kaytetyt;
  while (true) {
      int mod = (alku + 1) % 3;
      for (ll i = alku; i < loppu; i++) {
          if (tavoite % 2 == 0) {
              if (i % 3 != mod) {
                  continue;
              }
          } else if (i % 3 == mod) {
              continue;
          }
          if (alijonot(i, pituus) == tavoite) {
              string jono = bitset<29>(i).to_string();
              jono.erase(0, 29 - pituus);
              cout << jono << endl;
              return 0;
          }
          /*
          string jono = bitset<29>(i).to_string();
          jono.erase(0, 29 - pituus);
          if (kaytetyt.count(jono) != 0) {
              continue;
          }
          if (alijonot(jono) == tavoite) {
              cout << jono << endl;
              return 0;
          }
          if (i % 2 != 0) {
              reverse(jono.begin(),jono.end());
              kaytetyt.insert(jono);
          } else {
              jono = bitset<29>(loppu-1-i).to_string();
              jono.erase(0, 29-pituus);
              reverse(jono.begin(),jono.end());
              kaytetyt.insert(jono);
          }
          */
      }
      alku = loppu;
      loppu *= 2;
      pituus += 1;
  }
}