본문 바로가기

예전글/BOJ 단계별로 풀어보기

[백준][2단계][10430번] 나머지 (Java) : 사칙연산(6), 증명



 * 오류 지적, 오타, 내용 개선 댓글은 대환영입니다! 저도 초보니까요.


 안녕하세요, 갓벨입니다. 이번에는 백준 온라인 저지 10430번, '나머지'로 찾아뵈었습니다. 2단계도 벌써 반 이상 했군요. 이번에 주로 다루어 볼 것은 mod 연산자, %입니다. 앞의 수(피연산자)를 뒤의 수(연산자)로 나눈 나머지를 구하는 역할을 하죠.


 이번 문제는 뭔가 생각해 볼만한 여지가 있습니다. 물론 문제만 푸는 거라면 입출력만 제대로 하면 되지만, 문제에서 주어진 규칙이 수학적으로 실제로 성립하는지 알아보는 것도 재밌을 듯합니다. '풀이'란에 '>어떤 수를 입력하든 항상 같게 나올까?'를 누르시면 이에 관한 내용이 나옵니다.


문제


  (A+B)%C는 (A%C + B%C)%C 와 같을까?

  (A×B)%C는 (A%C × B%C)%C 와 같을까?

  세 수 A, B, C가 주어졌을 때, 위의 네가지 값을 구하는 프로그램을 작성하시오.


입력

 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

출력

 첫째 줄에 (A+B)%C, 둘째 줄에 (A%C + B%C)%C, 셋째 줄에 (A×B)%C, 넷째 줄에 (A%C × B%C)%C를 출력한다.

예제 입력

5 8 4

예제 출력

1
1
0
0

풀이


 우선 입력을 받아서, 주어진 연산을 수행하면 됩니다. 일단 A, B, C를 Scanner로 입력받읍시다.

import java.util.Scanner; class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); } }

 입력을 받았구요, 주어진 공식대로 연산을 한 과정을 똑같이 실어줍시다...

import java.util.Scanner; class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); System.out.println( (a+b) % c ); //(A+B)%C 출력 System.out.println( (a%c + b%c) % c ); //(A%C + B%C)%C 출력 System.out.println( (a*b) % c ); //(A×B)%C 출력 System.out.println( (a%c * b%c) % c ); //(A%C × B%C)%C 출력 } }

 됐네요 :) 직접 테스트해 보시기 바랍니다.

 아래는 추가 설명입니다!