👉 문제 바로가기
약간의 수학적 사고력데이터 번호의 1의 자리 수가 그 데이터를 처리하는 컴퓨터의 번호 수이다.
테스트 케이스를 입력받기 전에 미리 1부터 100까지의 정수에서 거듭제곱을 해가면서 나오는 1의 자리 숫자의 규칙성을 찾아 배열에 모두 저장해놓고, 정수 a와 b를 입력받아 a배열의 (b % a배열 사이즈)인덱스를 찾아 출력한다. (= 컴퓨터 번호)
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
int t, a, b;
std::vector< std::vector<char> > data(101, std::vector<char>());
for (int i = 1; i <= 100; ++i) {
int temp = i % 10;
while (std::find(data[i].begin(), data[i].end(), temp + '0') == data[i].end()) {
data[i].emplace_back(temp + '0');
temp *= i;
temp %= 10;
}
}
std::cin >> t;
for (int i = 0; i < t; ++i) {
std::cin >> a >> b;
char result = data[a][ b % data[a].size() == 0 ? data[a].size() - 1 : (b % data[a].size()) - 1];
result == '0' ? std::cout << 10 << '\n' : std::cout << result << '\n';
}
return 0;
}