ОБЪЯСНИТЕ КАК ЭТО РЕШАТЬ Даноарифметическое выражение 6^23+6^х-6^3.Найдите такой х (3<х<23), чтобы количество нулей, в записи числа в системе счисления с основанием 6, равнялось 8. ОТВЕТ: 18
Задачка вообще решается аналитически, но это может быть слишком сложно, так что я опишу как это можно "подобрать" по-умному. Буду отмечать жирным курсивом шестеричные числа. В чистовике их надо будет отмечать индексом 6 в конце
Начнём с того, что разделим выражение на два слагаемых. Первое слагаемое в шестеричной системе счисления 6^23 = 100000000000000000000000 (старшая единица и 23 нуля).
Второе слагаемое: 6^x - 6^3. Понятно, что если x=3 оно равно нулю.
Рассмотрим первый подходящий случай x=4, результат будет 6^4 - 6^3 = 5000. Почему? Можно, конечно, просто посчитать на калькуляторе или на листочке. Я предлагаю вынести общий множитель 6^3, то есть: 6^4 - 6^3 = (6-1) * 6^3 = (10-1) * 1000 = 5 * 1000 = 5000. То есть в старшем разряде имеем самую старшую цифру в нашей системе счисления и три нуля.
В следующем случае при x=5: 6^5 - 6^3 = (6^2 - 1) * 6^3 = (100-1) * 1000 = 55 * 1000 = 55000.
В случае x=6 получим 555000. Далее по аналогии - для любого икс будет (x-3) старших пятёрки и потом три нуля.
Видно, что при сложении с первым слагаемым никаких переполнений и переносов не возникнет, т.к. в первом слагаемом одни нули, кроме старшего разряда.
Получаем значение начального выражения
Для x=4: 100000000000000000005000
Для x=5: 100000000000000000055000
Для x=6: 100000000000000000555000
То есть для x=4 из 23 нулей первого слагаемого после сложения осталось 22. Для x=5 осталось 21. Для x=6 осталось 20.
Можно вывести нехитрую формулу: количество_нулей = 26 - x, подставить начальное условие количество_нулей=8 и решить уравнение из третьего класса: 8 = 26-x; x=18
10 CLS 20 REM Определяет количество положительных и отрицательных элементов массива 30 INPUT "Введите количество элементов в массиве N="; N 40 DIM A(N) 50 REM Ввод элементов массива 60 FOR I = 1 TO N 70 PRINT "Номер"; I; 80 INPUT "Значение элемента массива ="; A(I) 90 NEXT I 110 REM Нахождение количества положительных и отрицательных элементов массива 120 K = 0: S = 0 130 FOR I = 1 TO N 140 IF A(I) > 0 THEN K = K + 1 150 IF A(I) < 0 THEN S = S + 1 160 NEXT I 170 REM Вывод результатов 180 PRINT "Количество положительных элементов ="; K 190 PRINT "Количество отрицательных элементов ="; S 200 END
В таком виде программа была выполнена в среде LB Booster - бесплатной версии со входным языком Liberty BASIC. Сама же Liberty BASIC является коммерческим продуктом, в связи с чем попробовать выполнить эту программу именно в этой среде не представляется возможным.
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 procedure ex1(a:array of integer; var nn,np:integer); begin nn:=0; np:=0; for var i:=0 to a.Length-1 do if a[i]<0 then begin a[i]:=0; Inc(nn) end else if a[i]>0 then begin a[i]:=1; Inc(np) end end;
begin var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println; var kp,kn:integer; ex1(a,kn,kp); Writeln('Отрицательных ',kn,', положительных ',kp); a.Println end.
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 procedure ex2(a:array of integer); begin var k:=0; for var i:=0 to a.Length-1 do if a[i]>0 then begin Print(i+1); Inc(k) end; Writeln(NewLine,'Количество положительных элементов равно ',k) end;
begin var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println; ex2(a); end.
Тестовое решение: n= 13 15 -3 1 11 -20 17 -17 -12 -12 20 11 2 20 1 3 4 6 10 11 12 13 Количество положительных элементов равно 8
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 procedure ex3(a:array of integer); begin var s:=0; var k:=0; var i:=0; while i<a.Length do begin s+=abs(a[i]); Inc(k); i+=2 end; Writeln('Сумма модулей нечетных элементов равна ',s); Writeln('Их среднее арифметическое равно ',s/k) end;
begin var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println; ex3(a); end.
Тестовое решение: n= 10 2 -1 -14 -12 11 13 1 17 20 6 Сумма модулей нечетных элементов равна 48 Их среднее арифметическое равно 9.6
Задачка вообще решается аналитически, но это может быть слишком сложно, так что я опишу как это можно "подобрать" по-умному. Буду отмечать жирным курсивом шестеричные числа. В чистовике их надо будет отмечать индексом 6 в конце
Начнём с того, что разделим выражение на два слагаемых. Первое слагаемое в шестеричной системе счисления 6^23 = 100000000000000000000000 (старшая единица и 23 нуля).
Второе слагаемое: 6^x - 6^3. Понятно, что если x=3 оно равно нулю.
Рассмотрим первый подходящий случай x=4, результат будет 6^4 - 6^3 = 5000. Почему? Можно, конечно, просто посчитать на калькуляторе или на листочке. Я предлагаю вынести общий множитель 6^3, то есть: 6^4 - 6^3 = (6-1) * 6^3 = (10-1) * 1000 = 5 * 1000 = 5000. То есть в старшем разряде имеем самую старшую цифру в нашей системе счисления и три нуля.
В следующем случае при x=5: 6^5 - 6^3 = (6^2 - 1) * 6^3 = (100-1) * 1000 = 55 * 1000 = 55000.
В случае x=6 получим 555000. Далее по аналогии - для любого икс будет (x-3) старших пятёрки и потом три нуля.
Видно, что при сложении с первым слагаемым никаких переполнений и переносов не возникнет, т.к. в первом слагаемом одни нули, кроме старшего разряда.
Получаем значение начального выражения
Для x=4: 100000000000000000005000
Для x=5: 100000000000000000055000
Для x=6: 100000000000000000555000
То есть для x=4 из 23 нулей первого слагаемого после сложения осталось 22. Для x=5 осталось 21. Для x=6 осталось 20.
Можно вывести нехитрую формулу: количество_нулей = 26 - x, подставить начальное условие количество_нулей=8 и решить уравнение из третьего класса: 8 = 26-x; x=18