М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
AlisaSkun3
AlisaSkun3
22.08.2022 18:31 •  Информатика

Вычислить сумму тех чисел из заданного отрезка [a, b] (a, b — натуральные), в запись которых входит цифра k.(тема: процедуры в языке pascal)

👇
Ответ:
consenttime
consenttime
22.08.2022
Function HasK(n:longint;k:char):boolean;
  { возвращает true, если в числе n имеется цифра 'k' }
var ns:string;
begin
  Str(n,ns); { переходим к символьному изображению числа }
  HasK:=(Pos(k,ns))>0
end;

var
  a,b,i,kol:longint;
  k:char;
begin
  Write('Введите интервал чисел: '); Readln(a,b);
  Write('Введите искомую цифру: '); Readln(k);
  kol:=0;
  for i:=a to b do
    if HasK(i,k) then kol:=kol+1;
  Writeln('Количество чисел с цифрой ',k,': ',kol)
end.

Тестовое решение:
Введите интервал чисел: 136 523
Введите искомую цифру: 5
Количество чисел с цифрой 5: 96
4,5(68 оценок)
Открыть все ответы
Ответ:
semenem15
semenem15
22.08.2022
1) Результатом работы должно быть число больше, чем 43, но при этом быть минимальным. Т.е в двоичной с.с это скорее всего 6-значное число, т.к семизначное даст нам результат больше или равный 64.
2) Так как над начальной записью действия производятся дважды, то чтобы получилось 6-значное число в итоге работы программы нужно для начала взять 4-значное. Возьмем (для пробы) 1000. После выполнения алгоритмя число станет 100010. Первый раз к числу прибавится 1, т.е остаток будет 1, второй раз к числу прибавится 0. При переводе этого числа в 10-ю с.с получим 33. МАЛО.
3) Рассмотрим несколько вариантов таким же образом и остановимся, наконец, на том, который будет удовлетворять работе алгоритма.
4) Это 1011. После выполнения первого построения остаток будет 1, после второго добавится 0. В результате получится 101110(2)= 32+8+4+2=46(10)
4,8(78 оценок)
Ответ:
1. Отметим, что приписывание к двоичному числу двух младших разрядов предполагает предварительный сдвиг этого числа влево на два разряда (что равносильно умножению на 2²=4), а затем установку двух младших разрядов в соответствующие приписываемым битам значения. Следовательно, можно записать, что 4N+a>43, где a - число, образованное приписываемыми справа битами, которое не может превышать 11(2)=3(10)
4N+[0..3]≥44, откуда минимальное N=11
Теперь запишем N=11 в двоичной системе и применим к нему заданный алгоритм.
N=1011(2), число единиц три, нечетное, приписываем 1, получая 10111.
Теперь число единиц четное, приписываем 0 и получаем R=101110(2).
В десятичной записи ему соответствует число 46.
ответ: 46
4,6(85 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ