7204 2024. 01. 03 13:58:48 MagyarKendeSZLG Táblajáték cpp17 Elfogadva 50/50 3ms 3760 KiB
#include <bits/stdc++.h>

using namespace std;

#define speed cin.tie(0); ios::sync_with_stdio(0)

#include <bitset>

struct BinaryBigInt {
private:
    bitset<500> a;
public:
    // add exactly one to the number
    void add() {
        if (!a[0]) {
            a[0] = 1;
        } else {
            int i = 0;
            while (a[i] == 1) {
                a[i] = 0;
                i++;
            }
            a[i] = 1;
        }
    }

    // subtract exactly one from the number
    void sub() {
        if (a[0]) {
            a[0] = 0;
        } else {
            int i = 0;
            while (a[i] == 0) {
                a[i] = 1;
                i++;
            }
            a[i] = 0;
        }
    }

    // multiply by two (<< 1)
    void mul2() {
        a <<= 1;
    }

    // bivide by two (>> 1)
    void div2() {
        a >>= 1;
    }

    // parity
    bool parity() const {
        return a[0];
    }

	void print() const {
		// ignore leading zeroes
		int i = 499;
		for (i = 499; i >= 0; i--) {
			if (a[i]) break;
		}

		if (i < 0) {
			cout << 0;
		} else {
			for (; i >= 0; i--) {
				cout << a[i];
			}
		}
	}
};


int main()
{
	speed;
	
	int K, x = 0;
	cin >> K;
	BinaryBigInt y;

	while (K--) {
		char move;
		cin >> move;
		if (move == '0') {
			x++;
			y.add();
			y.mul2();
			y.sub();
			y.sub();
		}
		else if (move == '1') {
			x++;
			y.add();
			y.mul2();
			y.sub();
		}
		else if (move == '2') {
			x--;
			y.add();
			bool par = y.parity();
			y.div2();
			y.sub();
			if (par) y.add();
		}
		else if (move == '3') y.sub();
		else if (move == '4') y.add();
	}

	cout << x << '\n';
	y.print();
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1928 KiB
2 Elfogadva 0/0 3ms 2088 KiB
3 Elfogadva 3/3 3ms 2300 KiB
4 Elfogadva 3/3 3ms 2664 KiB
5 Elfogadva 3/3 3ms 2664 KiB
6 Elfogadva 3/3 3ms 2820 KiB
7 Elfogadva 3/3 3ms 2804 KiB
8 Elfogadva 3/3 3ms 3052 KiB
9 Elfogadva 3/3 3ms 3212 KiB
10 Elfogadva 3/3 3ms 3432 KiB
11 Elfogadva 3/3 3ms 3672 KiB
12 Elfogadva 3/3 3ms 3628 KiB
13 Elfogadva 4/4 3ms 3760 KiB
14 Elfogadva 4/4 3ms 3672 KiB
15 Elfogadva 4/4 3ms 3676 KiB
16 Elfogadva 4/4 3ms 3676 KiB
17 Elfogadva 4/4 3ms 3752 KiB