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

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

Наименьшее общее кратное

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

요약
최소공배수가 n인 k개 원소의 중복집합 개수를 10^9+7로 나눈 나머지로 구한다.
난이도

보통10점 중 7점

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

문제

Вася --- юный программист. Он уже умеет решать задачи на графы, структуры данных, комбинаторику и динамическое программирование. Но вот с теорией чисел он еще не знаком. Поэтому он стал посещать лекции по теории чисел. На одном из первых занятий он узнал, что такое наименьшее общее кратное.

Набором чисел назовем множество, в котором элементы могут повторяться.

Наименьшее общее кратное набора SS целых положительных чисел --- минимальное положительное целое число, которое делится на каждый элемент набора SS.

После каждого занятия преподаватель задает домашнее задание по пройденным темам. Вот и в этот раз он задал непростое задание:

Заданы числа $n$ и $k$, требуется определить количество таких наборов из $k$ элементов, наименьшее общее кратное которых равно $n$

Например, если n=6n = 6 и k=2k = 2, то подходящие наборы это: {1,6}\lbrace 1, 6 \rbrace, {2,3}\lbrace 2, 3 \rbrace, {2,6}\lbrace 2, 6 \rbrace, {3,6}\lbrace 3, 6 \rbrace, {6,6}\lbrace 6, 6 \rbrace. Поэтому ответ будет равен 5. Заметим, что наборы, отличающиеся только порядком элементов, считаются одинаковыми.

Вася очень хорошо усвоил лекцию, а также он очень смышленный мальчик, поэтому он уже решил задачу. Но он не уверен в том, что все сделал правильно. Вася просит вас помочь проверить его программу: решите эту же задачу и найдите ответы на некоторые тесты. Так как ответ может быть очень большим, Вася решил, что ему достаточно буде знать остаток от деления ответа на 109+710^9+7.

입력

В первой строке входного файла через пробел заданы числа nn (1≤n≤10121 \le n \le 10^{12}) и kk (1≤k≤1001 \le k \le 100).

출력

В выходной файл требуется вывести одно число: ответ по модулю 109+710^9+7.

예제2

  1. 예제 1

    입력
    6 2
    
    예상 출력
    5
    
  2. 예제 2

    입력
    239 3
    
    예상 출력
    3