\documentclass[a4paper,oneside,fleqn,11pt,russian]{extarticle}
\usepackage[cp1251]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{amssymb,amsmath}
%\usepackage{pscyr}
\usepackage{graphicx} 
%****************************************************************************************
\textheight=26.8cm
\textwidth=17cm
\oddsidemargin=-0.5cm
\topmargin=-3.0cm
\headsep = 6pt
\voffset=1.2cm
\allowdisplaybreaks
%****************************************************************************************
\DeclareGraphicsExtensions {.eps}
%****************************************************************************************
\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\textbf{Количество вхождений цифры. 7-9 класс}

Составьте программу, которая принимает на вход в первой строке шестнадцатеричную цифру $D$ -- одну из $\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F\}$, во второй строке целое положительное число $L$ и в третьей строке целое неотрицательное число $N$, записанное в четверичной системе. Число $L$ -- это длина четверичной записи числа $N$, и оно не более чем $50000$. Программа находит, количество вхождений цифры $D$ в запись числа $N$, если его перевести в шестнадцатеричную систему. В начале записи числа $N$ могут стоять незначащие нули, которые не следует учитывать при подсчёте количества вхождений $D = 0$. Незначащим является любой нуль, стоящий левее первой ненулевой цифры, или, если $N = 0$, то все нули, кроме самого правого.      



\textit{Формат ввода:}  В первой строке содержится символ $D$ — шестнадцатеричная цифра (одна из $\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F\}$). Во второй строке содержится целое положительное число $L$ — длина записи числа $N$ в четверичной системе, в которой могут быть незначащие нули (0 < L < 50001). В третьей строке содержится непустая последовательность символов, являющаяся записью в четверичной системе числа $N$ — целого, неотрицательного (в этой записи $L$ символов). 

\textit{Формат вывода:} В первой и единственной строке выводится неотрицательное целое число, равное искомому количеству вхождений цифры $D$ в шестнадцатеричную запись числа $N$ (от $0$ до $25000$).

\textit{Пример №1:}

\textit{ввод:}

F

12

000000000333

\textit{вывод:}

1

\textit{Пример №2:}

\textit{ввод:}

0

32

00000000000000000000000000000000

\textit{вывод:}

1

\textit{Пример №3:}

\textit{ввод:}

2

21

202020202020202020202

\textit{вывод:}

11

\textbf{Решение}

В решении нужно в цикле последовательно считывать и обрабатывать введённые цифры четверичной записи числа. Для перевода в шестнадцатеричную систему из четверичной можно использовать тот факт, что $4^2=16$. Значит, пару подряд идущих четверичных цифр можно переводить в одну шестнадцатеричную. Заранее неизвестно будет ли четверичная запись числа N (после отбрасывания незначащих нулей) иметь чётную длину или нечётную. При нечётной длине выходит, что первая значащая четверичная цифра будет совпадать с первой шестнадцатеричной, а остальные цифры сгруппируются по парам, и каждая такая пара будет переведена в одну шестнадцатеричную цифру. Поэтому считаем сколько незначащих нулей попалось во вводе, вычитаем их количество из $L$ и переводим, зная чётность количества значащих цифр. 

\textbf{Код возможного решения}
\begin{verbatim}
program DigitQty79 (input, output);
var
        C : char;
        D, TEMP, LOD, HID : byte;
        L, ANSWER : word;
begin   
        readln(C);
        if ((C <= '9') and (C >= '0')) then D := ord(C) - ord('0')
        else D := ord(C) - ord('A') + 10;
        LOD := D mod 4;
        HID := D div 4;
        ANSWER := 0;
        TEMP := 0;
        readln(L);
        while ((L > 0) and (TEMP = 0)) do begin
                read(C);
                dec(L);
                TEMP := ord(C) - ord('0')
        end; (* while *)
        if (L mod 2 = 0) then begin
                if (TEMP = D) then inc(ANSWER)
        end (* then *)	
        else begin
                read(C);
                dec(L);
                if (TEMP = HID) then begin
                        TEMP := ord(C) - ord('0');
                        if (TEMP = LOD) then inc(ANSWER)
                end (* if *)
        end (* if *)		
        while (L > 0) do begin
                read(C);
                dec(L);
                TEMP := ord(C) - ord('0');
                read(C);
                dec(L);
                if (TEMP = HID) then begin
                        TEMP := ord(C) - ord('0');
                        if (TEMP = LOD) then inc(ANSWER)
                end (* if *)
        end (* while *);
        writeln(ANSWER)
end.
\end{verbatim}
\end{document}