Олег86
?>

В кодировке UTF-16 каждый символ кодируется 16 битами. Влад написал текст (в нём нет лишних пробелов): «Мята, тыква, огурец, артишок, патиссон, картофель — овощи». Ученик вычеркнул из списка название одного из овощей. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 160 бит меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название овоща.

Информатика

Ответы

dearmaria

ответ: патиссон

160 бит / 16 бит = 10 символов убрали (считая запятую)

fshevxuzheva313
// PascalABC.NET 3.2, сборка 1367 от 20.12.2016
// Внимание! Если программа не работает, обновите версию!

function NOK(a,b:integer):integer;
begin
  if a=b then Result:=a
  else begin
    var c:=a*b;
    repeat
      if a>b then a:=a-b else b:=b-a;   
    until a=b;
    Result:=c div a
  end
end;

begin
  var n:=ReadInteger('N=');
  var L:=new List<integer>;
  var m:=n;
  while m>0 do begin
    var d:=m mod 10;
    L.Add(d);
    m:=m div 10
    end;
  var a:=L.Where(x->x<>0).Distinct.ToArray;
  var k:=a[0];
  if a.Length>1 then
    for var i:=1 to a.Length-1 do k:=NOK(k,a[i]);
  Range(k,n,k).Println;
end.

Пример
N= 227
14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 224

Как это работает?
Если число делится на каждое из нескольких чисел, то оно делится и на НОД этих чисел, Функция НОД позволяет найти НОД пары чисел, а её применение несколько раз позволит найти НОД для необходимого набора чисел.
Создаем объект типа "список целых" и цифра за цифрой помещаем туда числа, совпадающие с цифрами заданного числа n. Затем просматриваем список и все уникальные элементы, за исключением нуля, заносим в массив а. Далее вычисляем НОД для всех элементов полученного массива.
Понятно, что первым в последовательности искомых чисел будет стоять НОД, а далее пойдут числа, которые будут увеличиваться каждый раз на НОД, пока не достигнут n.
sedalex
1 вариант через строку

var 
  n,a,k,sum,i,j: integer; 
  s: string; 
begin
  sum:=0; 
  write ('Введите количество чисел: ');
  readln (n);
  for i:=1 to n do begin 
    write ('Введите число: ');
    readln (a);
    Str(a,s);
    k:=0;
    for j:=1 to length(s) do 
      if s[j]='5' then k:=k+1;
    if k=2 then sum:=sum+a;
  end;  
  writeln ('Sum = ',sum);
end.

2 вариант через div и mod

var 
  n,a,x,k,sum,i: integer; 
begin
  sum:=0; 
  write ('Введите количество чисел: ');
  readln (n);
  for i:=1 to n do begin 
    write ('Введите число: ');
    readln (a);
    x:=abs(a);
    k:=0;
    while x>0 do begin
      if x mod 10 =5 then k:=k+1;
      x:=x div 10;
    end;
    if k=2 then sum:=sum+a;
  end;  
  writeln ('Sum = ',sum);
end.

пример результата:

Введите количество чисел: 3
Введите число: 550001
Введите число: -550000
Введите число: 123456
Sum = 1

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

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

В кодировке UTF-16 каждый символ кодируется 16 битами. Влад написал текст (в нём нет лишних пробелов): «Мята, тыква, огурец, артишок, патиссон, картофель — овощи». Ученик вычеркнул из списка название одного из овощей. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 160 бит меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название овоща.
Ваше имя (никнейм)*
Email*
Комментарий*

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

Оксана170
борисовна Елена78
snopovajulia
Голосова-Лобанов1555
Maloletkina-marina2
Peshkov
Elen-ti81459
Vladimirovna1370
extremhunter
Pervosha
natalia-shelkovich
Mexx9050
sryzhova6392
zrv85
alenchik19938823