gcd와 최단 경로

면접 대비

시간 제한1초메모리 제한1024 MB

요약
1부터 N까지의 정점에서 gcd(x,y)=1일 때만 x와 y를 잇는 그래프가 주어질 때, dist(x,K)와 gcd(x,K)가 같은 x의 개수를 구한다.
난이도

어려움10점 중 8점

유형
정수론, 그래프, BFS, 수학
정답자
아직 제출이 없습니다

문제

\newcommand{\dist}{\mathrm{dist}}$$1번 정점부터 NN번 정점까지, 총 NN개의 정점으로 이루어진 그래프가 주어진다. 이 그래프는 다음과 같은 특수한 성질을 가진다.

1≤x,y≤N1 \leq x, y \leq N을 만족하는 서로 다른 두 정수 x,yx,y에 대하여,

  • gcd⁡(x,y)=1\gcd(x,y) = 1 이면 xx번 정점과 yy번 정점을 잇는 간선이 존재한다.
  • gcd⁡(x,y)≠1\gcd(x,y) \neq 1 이면 xx번 정점과 yy번 정점을 잇는 간선은 존재하지 않는다.

xx번 정점과 yy번 정점을 잇는 최단 경로의 길이를 \dist(x,y)\dist(x,y)로 정의하자. 두 정점을 잇는 경로가 존재하지 않는다면 \dist(x,y)=101010\dist(x,y)=10^{10^{10}} 으로 정의한다. 또한 정의에 따라 \dist(x,x)=0\dist(x,x) = 0이다.

11 이상 NN 이하의 정수 KK가 주어졌을 때, \dist(x,K)=gcd⁡(x,K)\dist(x,K) = \gcd(x,K)를 만족하는 11 이상 NN 이하의 정수 xx의 개수를 구해보자.

입력

첫째 줄에 정수 KK와 NN이 공백을 사이에 두고 주어진다. (1≤K≤N≤106)(1\leq K \leq N \leq 10^6)

출력

첫째 줄에 조건을 만족하는 정수의 개수를 출력한다.

힌트

gcd⁡(x,y)\gcd(x,y)는 xx와 yy의 최대공약수를 의미한다.

두 정점을 잇는 경로의 길이는 경로에 포함된 간선의 개수를 의미하며, 최단 경로의 길이는 그 중 최솟값을 의미한다.

예제4

  1. 예제 1

    입력
    3 4
    
    예상 출력
    3
    
  2. 예제 2

    입력
    6 20
    
    예상 출력
    14
    
  3. 예제 3

    입력
    2 3
    
    예상 출력
    2
    
  4. 예제 4

    입력
    1 1
    
    예상 출력
    0