Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 12871
  • 백준 14582
  • 백준 6550
  • 백준 2225
  • 백준 15655
  • 백준 3049
  • 백준 4659
  • 백준 2591
  • Java
  • 백준 16194
  • 백준 2467
  • 백준 1064
  • 자바
  • 백준 1531
  • 백준 7662
  • 백준 1914
  • 백준 1495
  • 백준 3135
  • 백준 12605
  • 백준 24039
  • 백준 15961
  • 백준 2343
  • 백준 1011
  • 백준 15312
  • 백준 7567
  • 백준 16926
  • 백준 1747
  • 백준 10709
  • 백준
  • 백준 8892
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 2004 조합 0의 개수(Java)
백준

백준 2004 조합 0의 개수(Java)

2023. 2. 9. 17:34

https://www.acmicpc.net/problem/2004

 

2004번: 조합 0의 개수

첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다.

www.acmicpc.net


 

해석 및 팁

 


 

이 문제를 풀려면 먼저 조합의 공식을 알아야 합니다. nCr = n! / r! * (n-r)! 이므로 분리해서 n! 에서 사용된 2 또는 5의 배수에서 (n-r)! 과 r! 의 2 또는 5의 배수를 빼주면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    int n = sc.nextInt();
    int m = sc.nextInt();

    int result5 = cal5(n) - cal5(n - m) - cal5(m);
    int result2 = cal2(n) - cal2(n - m) - cal2(m);
    
    
    System.out.println(Math.min(result2, result5));
  }

  public static int cal5(int num) {
    int count = 0;
    while(num >= 5) {
      count += num / 5;
      num /= 5;
    }
    return count;
  }

  public static int cal2(int num) {
    int count = 0;
    while(num >= 2) {
      count += num / 2;
      num /= 2;
    }
    return count;
  }
   
}

'백준' 카테고리의 다른 글

백준 15663 N과 M (9)(Java)  (0) 2023.02.09
백준 16953 A -> B(Java)  (0) 2023.02.09
백준 9184 신나는 함수 실행(Java)  (0) 2023.02.09
백준 11048 이동하기(Java)  (0) 2023.02.09
백준 10819 차이를 최대로(Java)  (0) 2023.02.09
    '백준' 카테고리의 다른 글
    • 백준 15663 N과 M (9)(Java)
    • 백준 16953 A -> B(Java)
    • 백준 9184 신나는 함수 실행(Java)
    • 백준 11048 이동하기(Java)
    Park DJ
    Park DJ

    티스토리툴바