728x90
문제

입/출력

문제 분석
문제를 보는동안 두가지 방법이 떠올랐다.
첫번째는 연산을 하면서 10으로 나눠서 연산하는 방법
두번째는 모든 숫자들은 거듭제곱을 진행하면 반복되는 일의자리 숫자가 발생하게 된다.
ex) 3^1 = 3, 3^2 = 9, 3^3, 3^4 = 7, 3^5 = 1, 3^6 = 3
이 부분으로 특정 제곱의 순서로 판단할 수 있을것으로 예상
단순 구현문제로 생각해서 일단 첫번째로 진행하기로함
테스트코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// 10보다 크면 안되기 때문에 10으로 나눠서 작업 진행
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(inputStreamReader);
int count = Integer.parseInt(bf.readLine());
for (int i = 0; i < count; i++) {
String[] nums = bf.readLine().split(" ");
int a = Integer.parseInt(nums[0]);
int b = Integer.parseInt(nums[1]);
int answer = 1;
for (int j = 0; j < b; j++) {
answer = (answer * a)%10;
}
System.out.println(answer);
}
}
}
실패....
10으로 나누기를 했기때문에 10번째는 0으로 남게된다.
이 부분을 10으로 바꿔줘야했음을 간과...
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// 10보다 크면 안되기 때문에 10으로 나눠서 작업 진행
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(inputStreamReader);
int count = Integer.parseInt(bf.readLine());
for (int i = 0; i < count; i++) {
String[] nums = bf.readLine().split(" ");
int a = Integer.parseInt(nums[0]);
int b = Integer.parseInt(nums[1]);
int answer = 1;
for (int j = 0; j < b; j++) {
answer = (answer * a)%10;
}
answer = answer == 0 ? 10 : answer;
System.out.println(answer);
}
}
}
통과!

알고리즘 분류
더보기
- 수학
- 분류
728x90
반응형
LIST