문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

3109 : 두 수의 곱의 약수 개수

•시간제한: 1.000 S •메모리제한: 256 MB •제출: 14 •통과: 4 •만든사람: suakii

3109 : 두 수의 곱의 약수 개수

시간 1.000s · 메모리 256MB · 제출 14 · 정답 4

문제 설명

두 자연수 $A$와 $B$가 주어졌을 때, 두 수의 곱 $A \times B$의 약수의 개수를 구하는 프로그램을 작성하세요.

단, $A \times B$는 최대 $10^{12}$(1조)에 달할 수 있으므로, $1$부터 $A \times B$까지 모두 나누어보는 단순 반복문 방식($O(A \times B)$)은 시간 초과(TLE)가 발생합니다.

소인수분해의 성질을 활용하여 효율적으로 약수의 개수를 구해야 합니다.

힌트: 소인수분해 결과가 $p_1^{e_1} \times p_2^{e_2} \times \dots$ 일 때, 약수의 총 개수는 $(e_1 + 1)(e_2 + 1)\dots$ 입니다.



[제약 조건]
• $1 \le A, B \le 1\,000\,000$
• $A, B$는 자연수
• 제한 시간: 1.0초

입력 설명

첫째 줄에 두 자연수 $A$와 $B$가 공백으로 구분되어 주어집니다.

출력 설명

$A \times B$의 약수의 개수를 출력하세요.

입력 예시
COPY
복사되었습니다!

4 6

출력 예시
COPY
복사되었습니다!

8

도움

4×6=24=2³×3¹ → (3+1)(1+1)=8... 아, 4=2², 6=2×3이므로 24=2³×3¹ → (3+1)(1+1)=8

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘