아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

최대공약수가 뭔데

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

요약
서로 다른 N개의 자연수에서 최대공약수가 1인 K개 부분집합의 개수를 10^9+7로 나눈 나머지로 구한다.
난이도

보통10점 중 7점

유형
정수론, 조합론, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

채완이는 1학년 후배들이 유클리드 호제법을 배웠다는 소식을 듣고 지문에 "최대공약수"가 들어간 문제를 만들기로 했다.

오름차순으로 정렬된 길이가 KK인 수열 {A1,A2…AK}\{A_1, A_2 \dots A_K\}의 최대공약수가 1일 때 이를 K-채완 수열이라 한다.

{A1,A2…AK}\{A_1, A_2 \dots A_K\}의 최대공약수는 모든 Ai(1≤i≤K)A_i (1 \leq i \leq K)의 공통된 약수인 자연수 중 가장 큰 수를 의미한다.

서로 다른 NN개의 자연수가 주어질 때 서로 다른 KK개를 선택하여 K-채완 수열을 만드는 경우의 수를 구해보자.

입력

첫째 줄에 NN, KK가 주어진다.

둘째 줄에 1 000 0001\,000\,000 이하인 자연수 NN개가 공백으로 구분되어 주어진다.

출력

K-채완 수열을 만드는 경우의 수를 1 000 000 007(=109+7)1\,000\,000\,007(=10^9+7)로 나눈 나머지를 출력하라.

제한

  • 1≤N≤1 000 0001 \leq N \leq 1\,000\,000
  • 1≤K≤N1 \leq K \leq N

예제2

  1. 예제 1

    입력
    5 2
    2 3 5 7 11
    
    예상 출력
    10
    
  2. 예제 2

    입력
    5 2
    2 3 6 8 11
    
    예상 출력
    6