ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1091. Тмутараканские экзамены

i really don't know why it got WA, need help please!
Послано BShell 14 апр 2003 12:16
var ans:longint;
    num,i,k,s,x:longint;

function c(m,n:longint):longint;
var ans:int64;
    i:longint;
begin
  ans:=1;
  for i:=1 to m do
    ans:=ans*(n+1-i);
  for i:=1 to m do
    ans:=ans div i;
  c:=ans;
end;

function divide(x:longint):longint;
var i,tot:longint;
begin
  i:=1;
  tot:=0;
  repeat
    inc(i);
    if x mod i=0 then
    begin
      x:=x div i;
      if x mod i=0 then
      begin
        divide:=0;
        exit;
      end;
      inc(tot);
    end;
  until x=1;
  divide:=tot;
end;

begin
  readln(k,s);
  ans:=0;
  for i:=2 to s do
  if (s div i>=k) then
  begin
    x:=s div i;
    num:=divide(i);
    if num<>0 then
    begin
    if num mod 2=1 then
      inc(ans,c(k,x))
    else dec(ans,c(k,x));
    end;
  end;
  if ans>10000 then ans:=10000;
  writeln(ans);
end.