본문 바로가기
Problem Solving/SWEA

[SWEA] 7193. 승현이의 수학공부

by 테리는당근을좋아해 2020. 2. 29.

문제

승현이는 N(2 ≤ N ≤ 10) 진법의 수 X(1 ≤ X ≤ N^10,000,000) 를 공책에 적었다.

승현이는 손이 점점 아프기 시작했고, 머릿속에서 문득 X를 (N-1)로 나눈 나머지가 궁금해졌다.

승현이를 도와 N진법의 수 X가 주어졌을 때에 X를 (N-1)로 나눈 나머지를 계산하는 프로그램을 작성하라.

예를 들면, 9진법의 수 234는 10진법으로 193이고, 8로 나눈 나머지는 1이 된다.

 

풀이방법

n진법으로 표현된 수를 (n-1)로 나누면 각 자리 수마다 자리 수의 값만큼 나머지가 생긴다.

 

즉 9진법으로 표현된 234를 8로 나누게 될 경우 9^2자리에는 나머지가 2, 9^1자리에는 나머지 1, 9^0자리에는 나머지가 4가 생긴다.

 

이러한 규칙을 이용해 n진법으로 표현된 수의 각 자리수의 합,

 

즉 각 자리수를 n-1로 나누었을 때 나머지들의 합을

 

다시 (n-1)로 나눈 값을 출력한다.

 

소스코드

package samsung;

import java.util.*;

public class s_7193 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int tc = sc.nextInt();
		
		for(int t = 1; t <= tc; t++) {
			long n = sc.nextLong();
			String s = sc.next();
			
			long sum = 0;
			
			for(int i = 0; i < s.length(); i++) {
				sum += s.charAt(i) - '0';
			}
			System.out.println("#" + t + " " + sum%(n-1));
			
		}
	}
}

 

댓글