===== PascalABC.NET =====
-№1-
begin
var (Яблок, Апельсинов, Бананов) :=
ReadInteger3('Число яблок, апельсинов и бананов:');
var ВесЯблок := 100 * Яблок;
var ВесАпельсинов := 150 * Апельсинов;
var ВесБананов := 170 * Бананов;
if ВесЯблок > ВесАпельсинов then
if ВесЯблок > ВесБананов then
Print('Берем яблоки')
else
Print('Берем бананы')
else if ВесАпельсинов > ВесБананов then
Print('Берем апельсины')
else
Print('Берем бананы')
end.
-№2-
begin
var n := ReadInteger('Введите натуральное число;');
var P := new HashSet<integer>; // это множество целых
while n > 0 do
begin
P += n mod 10; // очередную цифру добавляем ко множеству
n := n div 10
end;
P.Count.Println // в множестве все элементы уникальны
end.
§1. о системах счисления.
n4. развернутая форма записи числа
из курса вам известно, что цифры десятичной записи числа – это просто коэффициенты его представления в виде суммы степеней числа – основания системы счисления:
25076 = 2*10000 + 5*1000 + 0*100 + 7*10 + 6*1 = 2*104 +5*103 + 0*102 +7*101+6*100
при переводе чисел из десятичной системы счисления в римскую мы и воспользовались этим правилом (444 = 400 + 40 + 4; 2986 = 2000 + 900 + 80 + 6).
при записи чисел значение каждой цифры зависит от ее положения. место для цифры в числе называется разрядом, а количество цифр в числе разрядностью. на самом деле числа можно записывать как сумму степеней не только числа 10, но и любого другого натурального числа, большего 1.
определение. развернутой формой записи числа называется такая запись: а4а3а2а1а0 = а4*q4 + a3*q3 + a2*q2 + a1*q1 + a0*q0 , где а4,а3,а2,а1,а0 –цифры числа, q –основание степени.
пример1. получить развернутую форму числа 7512410.
решение:
а4 = 7, а3 = 5, а2 =1 ,а1 =2, а0 =4, q=10
4 3 2 1 0
75 12410 = 7*104 + 5*103 + 1*102 + 2*101 + 4*100.
пример2. получить развернутую форму числа 1123.
решение:
2 1 0
1123 = 1*32 + 1*31 +2*30
пример3. получить развернутую форму числа 176,218.
решение: 21 0-1-2а8=176, 218=1*82+7*81+6*80+2*8-1+1*8-2 для самостоятельной работы: 1. запишите в развернутом виде числа: а8=143511,62а2=100111а10=143,511а16=1а3,5с12. запишите в свернутой форме число: 9*101+1*100+5*10-1+3*10-2a*162+1*161+c*160+3*16-1Поделитесь своими знаниями, ответьте на вопрос:
1) значение арифметического выражения: 27^4 – 9^5 + 3^8 – 25 записали в системе счисления с основанием 3. сколько цифр «2» содержится в этой записи ? 2) значение арифметического выражения: 3∙16^8 – 4^5 + 3 записали в системе счисления с основанием 4. сколько цифр «3» содержится в этой записи ? 3) сколько значащих нулей в двоичной записи числа 4^1024 + 8^1025 – 2^1026 – 140? желательно объяснить решение подробно
Приведём все числа к степеням тройки, учитывая, что
25 = 27-2 = 3^3-2∙3^0
27^4 – 9^5 + 3^8 – 25 = (3^3)^4 - (3^2)^5 + 3^8 - 3^3 + 2∙3^0 =
(3^12 - 3^10) + (3^8 - 3^3) + 2∙3^0
Найдем значение разности в первой скобке, учитывая что 12-ая степени тройки в троичной системе это 1000000000000(3), а 10-ая степень - это 10000000000(3)
1000000000000(3)
-
10000000000(3)
220000000000(3)
Т.е. в троичной записи 12–10 = 2 «двойки» и 10 «нулей».
Вычислим аналогично вторую скобку:
100000000(3)
-
1000(3)
22222000(3)
Т.е. в троичной записи 8–3 = 5 «двоек» и 3 «нуля».
Таким образом, общее количество двоек = 2+5+1 = 8
2) 3∙16^8 – 4^5 + 3 (см. рис)
Приведём все числа к степеням четверки:
3∙16^8 – 4^5 + 3 = 3∙(4^2)^8 – 4^5 + 3∙4^0 = 3∙4^16 – 4^5 + 3∙4^0
Найдем значение разности, учитывая что 3∙4^16 в системе счисления с основанием 4 это одна «тройка» и 16 «нулей», а 4^5 - это одна «единица» и 5 «нулей»:
30000000000000000(4)
-
100000(4)
23333333333300000(4) (одна «двойка», 11 «троек» и 5 «нулей»)
Таким образом, общее количество троек = 11+1 = 12
3) 4^1024 + 8^1025 – 2^1026 – 140
Количество значащих нулей равно количеству всех знаков в двоичной записи числа минус количество единиц.
Приведём все числа к степеням двойки, учитывая, что 140 = 128 + 8 + 4
4^1024 + 8^1025 – 2^1026 – 140 =
(2^2)^1024 + (2^3)^1025 – 2^1026 – (2^7+2^3+2^2) =
2^3075 + 2^2048 – 2^1026 – 2^7 - 2^3 - 2^2
Старшая степень двойки – 3075, двоичная запись этого числа представляет собой единицу и 3075 нулей, то есть, состоит из 3076 знаков; таким образом, остаётся найти количество единиц.
Представим далее -2^1026 = -2^1027 + 2^1026, получим:
2^3075 + 2^2048 - 2^1027 + 2^1026 – 2^7 - 2^3 - 2^2
Аналогично – 2^7 = - 2^8 + 2^7, получим:
2^3075 + 2^2048 - 2^1027 + 2^1026 - 2^8 + 2^7 - 2^3 - 2^2
И, наконец, - 2^3 = - 2^4 + 2^3
2^3075 + (2^2048 - 2^1027) + (2^1026 - 2^8) + (2^7 - 2^4) + (2^3 - 2^2)
Вспомним свойство: число 2^N–2^K при K < N записывается как N–K единиц и K нулей.
Общее число единиц = 1+(2048-1027)+(1026-8)+(7-4)+(3-2) = 2044
Таким образом, количество значащих нулей равно 3076-2044 = 1032