iİnformatikanın məktəbdə tədrisi

2-8r

         Дано натуральное число n. Выяснить, сколько раз в этом числе встречается его максимальная цифра (за один просмотр числа). Например в числе 673757 максимальная цифра 7 и встречается она  3 раза, а в числе 4935 максимальная цифра 9 и встречается она 1 раз.

 Первый алгоритм, который приходит в голову – найти сначала максимальную цифру, как мы это сделали в задаче 7, а затем заново просматривать цифры числа и считать, сколько раз эта максимальная цифра повторится. Но в условии сказано, чтобы мы  исходное число просматривали только один раз. А этот алгоритм уже немного заковыристее. Обозначим само максимальное число qmax, а количество максимальных k.   Понятно, что обе эти переменные в начале должны быть равны 0. А сам алгоритм удивительно прост: если очередная цифра больше максимальной, то эта цифра становится максимальной и максимальная цифра пока одна, то есть k делаем равной 1. Если же очередная цифра равна максимальной, то увеличиваем  k  на 1. Эти действия выполняются в программе  в строках 11 – 13.

Отметим, что  INC(k);  это тоже самое, что и  k := k + 1;  ( а в С++  это  k++ )

 


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18


Program A2_8;

Var

  n,n1:int64;

  q,qmax,k:integer;

 begin

   readln(n);

   n1:=n; k:=1; qmax:=0;

   while (n1<>0) do

     begin

       q:=n1 mod 10;

       if (q>qmax) then

          begin qmax:=q; k:=1; end

       else if (q=qmax)then INC(k);

       n1:=n1 div 10;

     end;

   writeln(k);

   readln;

 end.



// Program A2.8;

#include <iostream>

 

using namespace std;

 

int main()

{ long long n,n1;

   int q,qmax=0,k=1;

   cin>>n;

   n1=n;

   while(n1)

   {  q=n1%10;

       if (q>qmax) {qmax=q;k=1;}

       else if( q==qmax)k++;

       n1=n1/10;

   }cout<<k<<endl;

    return 0;

}