View
# 문제 링크: https://www.acmicpc.net/problem/1009
# 문제
두 개의 자연수 A, B 가 주어질 때 A의 B제곱을 구하고, 그 결과를 10으로 나눈 나머지를 출력하는 문제입니다.
쉽게 생각해 보면, 우리가 알고 있는 거듭제곱의 공식을 이용하여 풀 수 있습니다.
그러나 문제에서는 결괏값을 10으로 나눈 나머지를 출력해야 하므로,
계산 과정에서 10으로 나눈 나머지를 저장해 가며 계산을 진행해야 합니다.
# 접근 방법
1. 테스트 케이스 개수 T 입력받기
2. T번 반복하게 하는 반복문 정의
3. 밑수 A와 지수 B 입력받기
4. 초기값을 1로 설정하고 B번 반복하게 정의
5. 현재 값에 A를 곱한 뒤 10으로 나눈 나머지를 구하기
6. 계산된 값을 현재 값으로 설정
7. 최종 결과 출력
※ 이 문제에서 주의해야 할 점 ※
1. 10번 컴퓨터:
10번 컴퓨터는 10의 거듭제곱일 때 밖에 나오지 않으므로,
결과가 0일 때는 10을 출력하게 하면 됩니다.
2. 시간제한:
이 문제의 시간제한은 1초이기에 코드를 비효율적으로 작성한다면 시간 초과로 오답처리 될 가능성이 있습니다.
# 풀이
[C++] 소스코드
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t; // 테스트 케이스 개수 입력 받기
for (int i = 0; i < t; i++)
{
int a, b, result = 1; // 결과값을 1로 초기화 시켜줘야 값을 매번 저장해가며 계산 가능
cin >> a >> b;
for (int j = 0; j < b; j++)
{
result = (result * a) % 10; // 거듭제곱한 결과값 저장
}
if (result == 0)
{
cout << 10 << endl; // 10의 거듭제곱의 경우
}
else
{
cout << result << endl;
}
}
return 0;
}
# 성능
# 정리
수학, 구현 알고리즘에 속하는 문제입니다.
밑수 A와 지수 B가 모두 1 이상으로 주어지는 문제여서 크게 생각할 건 없었던 것 같습니다.
나머지 연산자(%)를 활용하여 푸는 간단한 문제였습니다.
728x90
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 7568번: 덩치 [C/C++] (1) | 2023.04.04 |
---|---|
[백준] 11866번: 요세푸스 문제 0 [C/C++] (0) | 2023.04.03 |
[백준] 2581번: 소수 [C/C++] (0) | 2023.04.02 |
[백준] 1157번: 단어 공부 [C/C++] (0) | 2023.04.01 |
[백준] 1000번: A+B [C/C++] (0) | 2023.03.31 |
reply