728x90
반응형
1. 문제
https://www.acmicpc.net/problem/1009
2. 접근 방식
- mod연산의 성질을 통해 큰 제곱수를 연산하지 않고 mod 값을 알아냄
- 빠른 모듈로 거듭제곱법을 적용함
3. 코드
#include <iostream>
#include <vector>
using namespace std;
typedef unsigned long long ll;
int func_1009_mod(int a, int b) {
vector<int> tmp, tmp2;
int *x;
ll res = 1;
while(b!=0) {
tmp.push_back(b % 2);
b /= 2;
}
x = new int[21];
x[0] = a % 10;
for (int j = 1; j <= 20; j++) {
x[j] = (x[j-1] * x[j - 1]) % 10;
}
for (int i = 0; i < tmp.size(); i++) {
if (tmp.at(i) == 1) {
res *= x[i];
}
}
if (res % 10 == 0) res = 10;
else res %= 10;
return res;
}
int main() {
int n, a, b;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a >> b;
cout << func_1009_mod(a, b) << "\n";
}
return 0;
}
4. 결과
- C++로 구현시 큰 수를 변수 하나로 처리하기 어려워 다른 방법을 찾아야했지만, 파이썬을 활용하면 Pow 연산만으로 결과를 구할 수 있음
- 파이썬 활용하면 좋은 문제인듯함
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 10773번 - 제로 (실버 4) (0) | 2022.03.15 |
---|---|
[백준] 15829번 - Hashing (브론즈 2) (0) | 2022.03.15 |
[백준] 18111번 - 마인크래프트 (실버 2) (0) | 2022.03.14 |
[백준] 삼성 SW 역량 테스트 기출 문제 (작성중) (0) | 2022.02.22 |
[백준] 단계별로 풀어보기 > 그리디 알고리즘 (c++) (0) | 2022.02.20 |
[백준] 단계별로 풀어보기 > 동적 계획법 1 (c++) (0) | 2022.02.16 |
댓글