수학_나머지 연산

J·2021년 4월 16일
1

백준 기초

목록 보기
2/6
post-thumbnail

나머지 연산

덧셈, 곱셈, 뺄셈은 다음 연산이 만족되지만 나눗셈은 성립되지 않음.
단, 뺄셈은 음수가 나올 수 있기 때문에 다음과 같이 더해주고 나눠줘야한다.

(A+B) mod M = ((A mod M) + (B mod M)) mod M
(AxB) mod M = ((A mod M) x (B mod M)) mod M
(A-B) mod M = ((A mod M) - (B mod M) + M) mod M

음수의 경우 결과의 부호가 프로그래밍 언어마다 다르다.

(6%3 - 5%3) % 3 = -2%3 = ❓ -2,1

  • Java, C, C++ : -2
  • Python : 1

4375번_1

📌문제

2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

✍입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.

📄출력

1로 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다.

👀예제

입력
3
7
9901

출력
3
6
12

n이 7일 때 1로 이루어진 7의 배수 중 가장 작은 수의 자릿수는 6이다.

1) 1 % 7 = 1
2) 11 % 7 = 4
3) 111 % 7 = ((11%7) x 10 + 1) = 40 + 1 = 6
4) 1111 % 7 = ((111%7) x 10 + 1) = 60 + 1 = 5
5) 11111 % 7 = ((1111%7) x 10 + 1) = 50 + 1 = 2
6) 111111 % 7 = ((11111%7) x 10 + 1) = 20 + 1 = 0

🌴 code

package math;

import java.util.Scanner;

public class no4375_1 {
    public static int One(int n){
        int num = 0;
        for(int i=1;;i++){
            num = num*10 + 1;
            num = num % n;
            if(num==0)
                return i;
        }

    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while (sc.hasNextInt()){
            int n = sc.nextInt();
            System.out.println(One(n));
        }

    }
}

0개의 댓글