#include <iostream>
using namespace std;
int gcd(int m, int n) // Поиск наибольшего общего делителя
{
while(m && n) if (m < n) n %= m; else m %= n;
return m + n;
}
// Все возможные простые делители чисел до 5000
int primes[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67 };
// Проверка числа на k общих делителей
bool cnt(int n, int m, int k)
{
int g = gcd(n,m); // НОД
int total = 1; // Количество общих делителей
// факторизуем НОД на простые сомножители; количество делителей -
// произведение их степеней, увеличенных на 1
for(int i = 0; g > 1 && i < sizeof(primes)/sizeof(primes[0]); ++i)
{
int l = 0;
while(g%primes[i] == 0) { g /= primes[i]; ++l; }
total *= l+1;
}
return total == k;
}
int main(int argc, const char * argv[])
{
int n, k, count = 0;
cin >> n >> k;
// Перебор всех чисел
for(int m = 1; m < n; ++m)
if (cnt(n,m,k)) count++;
cout << count << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGdjZChpbnQgbSwgaW50IG4pICAvLyDQn9C+0LjRgdC6INC90LDQuNCx0L7Qu9GM0YjQtdCz0L4g0L7QsdGJ0LXQs9C+INC00LXQu9C40YLQtdC70Y8KewogICAgd2hpbGUobSAmJiBuKSBpZiAobSA8IG4pIG4gJT0gbTsgZWxzZSBtICU9IG47CiAgICByZXR1cm4gbSArIG47Cn0KCi8vINCS0YHQtSDQstC+0LfQvNC+0LbQvdGL0LUg0L/RgNC+0YHRgtGL0LUg0LTQtdC70LjRgtC10LvQuCDRh9C40YHQtdC7INC00L4gNTAwMAppbnQgcHJpbWVzW10gPSB7IDIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzNywgNDEsIDQzLCA0NywgNTMsIDU5LCA2MSwgNjcgfTsKCi8vINCf0YDQvtCy0LXRgNC60LAg0YfQuNGB0LvQsCDQvdCwIGsg0L7QsdGJ0LjRhSDQtNC10LvQuNGC0LXQu9C10LkKYm9vbCBjbnQoaW50IG4sIGludCBtLCBpbnQgaykKewogICAgaW50IGcgPSBnY2QobixtKTsgICAgICAgICAgICAvLyDQndCe0JQKICAgIGludCB0b3RhbCA9IDE7ICAgICAgICAgICAgICAgLy8g0JrQvtC70LjRh9C10YHRgtCy0L4g0L7QsdGJ0LjRhSDQtNC10LvQuNGC0LXQu9C10LkKCiAgICAvLyDRhNCw0LrRgtC+0YDQuNC30YPQtdC8INCd0J7QlCDQvdCwINC/0YDQvtGB0YLRi9C1INGB0L7QvNC90L7QttC40YLQtdC70Lg7INC60L7Qu9C40YfQtdGB0YLQstC+INC00LXQu9C40YLQtdC70LXQuSAtCiAgICAvLyDQv9GA0L7QuNC30LLQtdC00LXQvdC40LUg0LjRhSDRgdGC0LXQv9C10L3QtdC5LCDRg9Cy0LXQu9C40YfQtdC90L3Ri9GFINC90LAgMQogICAgZm9yKGludCBpID0gMDsgZyA+IDEgJiYgaSA8IHNpemVvZihwcmltZXMpL3NpemVvZihwcmltZXNbMF0pOyArK2kpCiAgICB7CiAgICAgICAgaW50IGwgPSAwOwogICAgICAgIHdoaWxlKGclcHJpbWVzW2ldID09IDApIHsgZyAvPSBwcmltZXNbaV07ICsrbDsgfQogICAgICAgIHRvdGFsICo9IGwrMTsKICAgIH0KICAgIHJldHVybiB0b3RhbCA9PSBrOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewogICAgaW50IG4sIGssIGNvdW50ID0gMDsKICAgIGNpbiA+PiBuID4+IGs7CgogICAgLy8g0J/QtdGA0LXQsdC+0YAg0LLRgdC10YUg0YfQuNGB0LXQuwogICAgZm9yKGludCBtID0gMTsgbSA8IG47ICsrbSkKICAgICAgICBpZiAoY250KG4sbSxrKSkgY291bnQrKzsKCiAgICBjb3V0IDw8IGNvdW50IDw8IGVuZGw7Cn0K