Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»
42
3.
Избавляемся от последнего разряда в b;
4.
Прибавляем последний разряд a в текущий разряд c с помощью множителя z;
5.
Умножаем z на 10;
6.
Избавляемся от последнего разряда в a;
5)
Вывод c.
Код:
1.
program CombineTwoNums;
2.
3.
var
4.
c, z: integer;
5.
a, b: word;
6.
7.
begin
8.
readln(a, b);
9.
c := 0;
10.
z := 1;
11.
while a <> 0 do begin
12.
c := c + z * (b mod 10);
13.
z := z * 10;
14.
b := b div 10;
15.
c := c + z * (a mod 10);
16.
z := z * 10;
17.
a := a div 10
18.
end;
19.
writeln(c)
20.
end.
Задача № 35. Вывести на экран x, записанное в системе счисления с основанием n
Формулировка. Даны натуральные числа x и n (n <= 10). Вывести на экран число x, записан-
ное в системе счисления с основанием n.
Решение. Вспомним правило из задачи 5:
Остаток от деления любого десятичного числа x на число p дает нам разряд единиц числа x (его
крайний разряд справа) в системе счисления с основанием p.
Раньше мы принимали это правило без доказательства, однако сейчас мы коснемся его, так
как оно достаточно краткое.
Воспользуемся формулой записи десятичного числа x в системе счисления с основанием p,
состоящего из r знаков:
x = a
r–1
* p
r–1
+ a
r–2
* p
r–2
+ ... + a
2
* p
2
+ a
1
* p
1
+ a
0
* p
0
,
где p
r–1
, p
r–2
, …, p
2
, p
1
, p
0
–
основание
системы счисления, возведенное в соответствующие сте-
пени, a
r–1
, a
r–2
, ..., a
2
,a
1
, a
0
–
цифры в записи этого числа в системе счисления с основанием p.
Например, число 378 в десятичной системе счисления выглядит так: 378 = 3 * 10
2
+ 7 * 10
1
+
8 * 10
0
.
Если мы подряд выпишем цифры a
2
(= 3), a
1
(= 7), a
0
(= 8),
то исходное число восстановится.
Запишем представление числа в 22 двоичной системе счисления (переведем его с помощью
калькулятора, оно равно 10110
2
) по этой же формуле: 22 = 1 * 2
4
+ 0 * 2
3
+ 1 * 2
2
+ 1 * 2
1
+ 0 * 2
0
.
Понятно, что если мы вычислим выражение в правой части равенства, то получим как раз 22.
Do'stlaringiz bilan baham: |