ХКОИС
ХРРЦ
Регистрация
Забыли пароль?
Логин:
Пароль:
Поиск
Справочные сведения о системе образования Хабаровского края
Новости образования Хабаровского края
Информация и документы из министерства образования и науки Хабаровского края
Хабаровская краевая заочная физико-математическая школа
РЕГИОНАЛЬНАЯ ОЛИМПИАДА ШКОЛЬНИКОВ
Подготовка к олимпиадам по информатике
Подготовка к олимпиадам по информатикеМетоды и приемы программирования > Применение понятий о системах счисления к решению задач
Применение понятий о системах счисления к решению задач
 
Перевод числа из одной системы счисления в другую довольно часто используется при решении олимпиадных задач. В общем случае для решения таких задач нужно найти запись данного числа N в системе счисления по заданному основанию D.
Различные алгоритмы перевода числа из десятичной системы счисления в другую рассмотрены в статье «Системы счисления». Рассмотрим некоторые задачи.
 
Пример 1. Найти строку, содержащую запись данного числа в системе счисления по основанию 2.
 
Задачу можно решить использую следующую программу:
 
program primer1;
var
   N,k:integer;
   s,s1:string;
begin
     readln(N);
     s:='';
     while N>0 do
     begin
     k:=N mod 2;
     N:=N div 2;
     str(k,s1);
     s:=s1+s
     end;
     writeln(s)
end.
 
Здесь использована предопределенная процедура str, которая присваивает переменной строчного типа s1, символьную запись переменной k.
Аналогично может быть решена следующая задача:
 
Пример 2. Найти сумму цифр данного числа после перевода его в систему счисления по основанию 9. Решение приведено ниже:
 
program primer2;
var
   N,k,s:integer;
begin
     readln(N);
     s:=0;
     while N>0 do
     begin
     k:=N mod 9;
     N:=N div 9;
     s:=s+k
     end;
     writeln(s)
end.
 
В этой программе, как и в предыдущей, в цикле находится младшая цифра записи числа в новой системе счисления k:=N mod 9, а затем она отбрасывается операцией N:=N div 9. Цифры суммируются. При необходимости можно подсчитать сколько цифр в записи числа в системе счисления по новому основанию.
В некоторых случаях, задача сводится к обработке массива цифр, соответствующего записи числа в заданной системе счисления. Рассмотрим задачу, в которой требуется сформировать такой массив.
 
Пример 3. Сформировать массив, содержащий цифры, образующие запись данного целого числа в системе счисления по основанию 5 и вывести их на печать. Задача решается следующей программой:
 
program primer3;
var
   N,i,k:integer;
   a:array[1..16] of integer;
begin
     readln(N);
     i:=1;
     while N>0 do
     begin
     a[i]:=N mod 5;
     N:=N div 5;
     i:=i+1;
     end;
     k:=i-1;
     for i:=k downto 1 do
         write(a[i]);
     writeln;
end.
 
Число k в данной программе имеет значение равное числу разрядов в новой записи числа. Поскольку в массив последовательно помещаются цифры пятеричной записи числа начиная с младших разрядов, то при выводе результата, их следует печатать в порядке убывания номеров разрядов.
 
Примечание. Общие сведения об использовании массивов в Паскале можно посмотреть в статье «Элементарное введение в программирование на языке Turbo-Pascal».
  
Copyright © 2005–2017 ХабЦНИТ ТОГУ Отправить письмо
Создание сайтов в Хабаровске