Nestor was doing the work of his math class about three days but he is tired of make operations a lot and he should deliver his task tomorrow. His math’s teacher gives two numbers a and b. The problem consist in find the last digit of the potency of base a and index b. Help Nestor with his problem. You are given two integer numbers: the base a (0 <= a <= 20) and the index b (0 <= b <= 2,147,483,000), a and b both are not 0. You have to find the last digit of a^b.
Input
The first line of input contains an integer t, the number of test cases (t <= 30). t test cases follow. For each test case will appear a and b separated by space.
Output
For each test case output an integer per line representing the result.
Example
Input:
2
3 10
6 2
Output:
9
6
#include <iostream>
#include <vector>
using namespace std;
long long mod(long long a, long long b) {
return (a % b < 0 ? a % b + b : a % b);
}
int powMod10(long long a, long long b) {
if (b == 0) {
return 1;
} else if (a == 0) {
return 0;
} else {
vector <long long> powers;
powers.push_back(a%10);
do {
powers.push_back((powers.back()*(a%10))%10);
} while(powers.back() != powers.front());
int cycleSize = powers.size() - 1;
return powers[mod((b-1),cycleSize)];
}
return 0;
}
int main() {
int t;
cin >> t;
for (;t--;) {
long long a, b;
cin >> a >> b;
cout << powMod10(a, b) << "\n";
}
return 0;
}