끄적끄적 코딩
article thumbnail

수학 문제입니다.

N이 x개 있는 수가 있을 때 K로 나누어지는지 찾고 몇번만에 나누어지는지를 출력해야합니다.

N이 x개 있다는 것은 31이 N이고 x가 5면 
3131313131입니다.

N이 K로 나눈 나머지를 확인하고,
0이 아니라면, 나온 나머지를 N과 연결하여 다시 위의 과정을 반복합니다.

0이 나온다면 성공한 케이스로 횟수를 출력해주고,
같은 나머지가 나올 경우는 실패한 경우로 -1을 출력해줍니다.

import java.io.*;
import java.util.*;

public class Main {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    StringTokenizer st = new StringTokenizer(br.readLine());

    long n = Integer.parseInt(st.nextToken());
    long k = Integer.parseInt(st.nextToken());
    int result = 1;
    int[] check = new int[100001];
    long num = n % k;
    String s = Long.toString(n);
    long mul = (long) Math.pow(10, s.length());

    while (true) {
      if (num == 0) {
        break;
      }

      num = (n % k + (num * (mul % k)) % k) % k;

      ++result;
      if (check[(int) num] == 1) {
        result = -1;
        break;
      }

      check[(int) num] = 1;
    }

    bw.write(result + "\n");
    bw.close();
  }
}




'알고리즘' 카테고리의 다른 글

[Java] 백준 3079번 입국심사  (0) 2023.08.02
[Java] 백준 2473번 세 용액  (0) 2023.08.01
[Java] 백준 2470번 두 용액  (0) 2023.07.27
[Java] 백준 9177번 단어 섞기  (0) 2023.07.26
[Java] 백준 21758번 꿀 따기  (0) 2023.07.26

검색 태그