Tuesday, September 1, 2015

UVa 10666 - The Eurocup is Here!

// UVa 10666 - The Eurocup is Here!

#include <iostream>
using namespace std;

#define datatype unsigned long long

int main() {
	datatype p[31];
	p[0] = 1;
	for (int i = 1; i < 31; i++)
		p[i] = p[i - 1] << 1;
	int t;
	for (cin >> t; t; t--) {
		int n;
		datatype m;
		cin >> n >> m;

		int ones = 0;
		datatype j = m;
		for (int i = 0; i < n; i++) {
			if (j % 2 == 1)
				ones++;
			j = j >> 1;
		}

		datatype zeros = 0;
		j = m;
		for (int i = 0; i < n; i++) {
			if (j % 2 == 1)
				break;
			zeros += p[i];
			j = j >> 1;
		}

		cout << ones + 1 << " " << p[n] - zeros << endl;
	}
	return 0;
}

No comments:

Post a Comment