Cod sursa(job #1888169)

Utilizator lflorin29Florin Laiu lflorin29 Data 21 februarie 2017 22:47:37
Problema Ciuperci Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <bits/stdc++.h>

using namespace std;

const int mod = 666013;

map<int64_t, int>cnt;

int nr(int64_t n) {
	if (n == 1)
		return 1;

	if (n == 0)
		return 1;

	if (cnt.find(n) != end(cnt))
		return cnt[n];

	--n;

	if (n % 2 == 0)
		return cnt[n] = (1LL * nr(n / 2) * nr(n / 2)) % mod;

	int v1 = nr(n / 2), v2 = nr(n / 2 + 1);
	return cnt[n] = (2LL * v1 * v2) % mod;
}

int main() {
	ifstream cin("ciuperci.in");
	ofstream cout("ciuperci.out");

	int t;
	cin >> t;

	while (t--) {
		int64_t n;
		cin >> n;cnt.clear();
		cout << nr(n) << '\n';
	}
}