АлександровнаВладлен243
?>

Написать программу, которая определяет среднюю успеваемость учеников в классе и подсчитывает число учеников учащихся выше среднего. pascal

Информатика

Ответы

morozova
В задаче имеется "топорное решение" — посчитать напрямую. Получившееся число будет восьмизначным, что не так уж и страшно, если в голову не приходят другие решения.

Рассмотрим, однако, решение, которое позволит делать подобные задачи без прямого подсчёта. Для этого, прежде всего, переведём всё в степени тройки:

98328316+35+35+35−9−32−32==
9
8
+
3
5
−9 =
3
2
8
+
3
5

3
2
=
3
16
+
3
5

3
2

Как представляется число 3n в троичной системе счисления? Давайте подумаем, как мы переводим из десятичной системы в троичную? Сначала делим на 3, затем частное делим на 3, затем новое частное на 3 и т.п. Что получится в случае деления 3n на 3? Очевидно, что 3n-1. А если его поделить дальше на 3, то получится 3n-2. Если так сделать n раз, то в конце останется 30, то есть. Таким образом, это будет число 100..00, где количество нулей равно n.

То есть, например, 8-ая степени тройки в троичной системе представима в виде 1000000003. А 35 — это 1000003.

Вернёмся теперь к нашей сумме. Давайте сначала в столбик сложим 316 и 35 в троичной системе счисления.

100…000000016100000100…0⏟10100000 1
00

0000000

16
100000 1
00

0

10
100000

Теперь остаётся из этого вычесть 32. Для этого придётся "занять" разряд. Но принцип тут такой же, как и в обычной, десятичной системе счисления, только 0 будут превращаться не в 9, а в 2 (самую большую цифру в троичной системе счисления:

100…0⏞10100000−100100…0⏟10022200 1
00

0

10
100000 −100 1
00

0

10
022200

Таким образом, количество двоек в указанной сумме получилось равным 3.

ответ: 3 двойки в троичной записи.
VladimirovnaBugrova
Var    a: integer; begin    read(a);         if  (a > =  1)  and  (a < =  31)  then write(a,' ',1);   if  (a > =  32)  and  (a < =  59)  then write((a -  31),' ',2);   if  (a > =  60)  and  (a < =  90)  then write((a -  59),' ',3);   if  (a > =  91)  and  (a < =  120)  then write((a -  90),' ',4);   if  (a > =  121)  and  (a < =  151)  then write((a -  120),' ',5);   if  (a > =  152)  and  (a < =  181)  then write((a -  151),' ',6);   if  (a > =  182)  and  (a < =  212)  then write((a -  181),' ',7);   if  (a > =  213)  and  (a < =  243)  then write((a -  212),' ',8);   if  (a > =  244)  and  (a < =  273)  then write((a -  243),' ',9);   if  (a > =  274)  and  (a < =  304)  then write((a -  273),' ',10);   if  (a > =  305)  and  (a < =  334)  then write((a -  304),' ',11);   if  (a > =  335)  and  (a < =  365)  then write((a -  334),' ',12);   readln;   readln end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Написать программу, которая определяет среднюю успеваемость учеников в классе и подсчитывает число учеников учащихся выше среднего. pascal
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Azat859
КалюкМарасанов1026
uglichdeti
olgamalochinska
Ligacom
Klochkov malakhov1974
terehin863
Veril8626
Полковников_Милана
blizzardtap641
zotcet7
st7307
Larisa Bulgakova
schernov
olgaprevisokova302