Другие языки программирования и технологии

Помогите с задачкой на паскаль

Задача A. «Киберспорт»

Всё большую популярность среди молодёжи приобретает киберспорт. Наряду с таким увлекательным состязанием как игра в «Counter-Strike», стали проводиться турниры в номинации «На кого бог пошлёт».
Участники турнира получают случайную цифру C от 0 до 9, затем каждый из них вычисляет порядковый номер своего дня рождения в году D и находит факториал D! этого числа. Победителем турнира объявляется тот участник, у которого в D! цифра C встречается наибольшее количество раз.
Напоминаем, что факториал числа D обозначается D! и равен произведению 1•2•3•…•D.
Жюри турнира «На кого бог пошлёт» просит вас написать программу, которая будет проверять результаты участников.

Входные данные

Два целых числа D и C (1 ≤ D ≤366, 0 ≤ C ≤9).

Выходные данные

Единственное число, количество вхождений цифры C в число D!.

Примеры

Вход Выход
5 2 1
7 0 2
type
    ll = record
        l: integer;
        d: array [1..1000] of byte;
    end;

procedure add(var a, b: ll);
var
    c, m: integer;
    r: byte;
begin
    m := 0;
    if b.l > a.l then a.l := b.l;
    for c := 1 to a.l do begin
        r := a.d[c] + b.d[c] + m;
        a.d[c] := r mod 10;
        m := r div 10;
    end;
    if m > 0 then begin
        inc(a.l);
        a.d[a.l] := m;
    end;
end;

procedure mul(var a: ll; b: integer);
var
    c: integer;
    r: ll;
begin
    r := a;
    for c := 1 to b - 1 do add(a, r);
end;

procedure fact(n: integer; var r: ll);
begin
    fillchar(r, sizeof(r), 0);
    r.l := 1;
    r.d[1] := 1;
    while n > 0 do begin
        mul(r, n);
        dec(n);
    end;
end;

var
    f: ll;
    c, n, d, r: integer;
begin
    readln(n, d);
    fact(n, f);
    for c := 1 to f.l do if f.d[c] = d then inc(r);
    writeln(r);
end.
Паша Про
Паша Про
66 233
Лучший ответ
Классическая задача на длинную арифметику. Пишешь функцию умножения двух чисел, записанных в строках (результат - тоже строка) , а затем используешь ее в факториале. Ну и считаешь результат.
Глеб )))
Глеб )))
89 357