Algorithm


A. Modular Exponentiation
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

The following problem is well-known: given integers n and m, calculate

,

where 2n = 2·2·...·2 (n factors), and  denotes the remainder of division of x by y.

You are asked to solve the "reverse" problem. Given integers n and m, calculate

.
Input

The first line contains a single integer n (1 ≤ n ≤ 108).

The second line contains a single integer m (1 ≤ m ≤ 108).

Output

Output a single integer — the value of .

Examples
input
Copy
4
42
output
Copy
10
input
Copy
1
58
output
Copy
0
input
Copy
98765432
23456789
output
Copy
23456789
Note

In the first example, the remainder of division of 42 by 24 = 16 is equal to 10.

In the second example, 58 is divisible by 21 = 2 without remainder, and the answer is 0.

 



 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming

#include <bits/stdc++.h>

using namespace std;

int const N = 1e5 + 1;
int n, m, a[N];

int main() {
	scanf("%d %d", &n, &m);

	long long Pow = 1;
	while(n != 0 && Pow <= m) {
		Pow *= 2;
		--n;
	}
	
	if(n != 0) {
		cout << m << endl;
	} else {
		cout << m % Pow << endl;
	}

	return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
4
42

Output

x
+
cmd
10
Advertisements

Demonstration


Codeforces Solution-Modular Exponentiation-Solution in C, C++, Java, Python

Previous
Codeforces solution 1080-B-B. Margarite and the best present codeforces solution
Next
CodeChef solution DETSCORE - Determine the Score CodeChef solution C,C+