В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
ралина35
ралина35
24.11.2022 14:45 •  Информатика

В древней Греции жил мудрец по имени Прокопий, который был славен тем, что мог по любому числу мгновенно определить, есть ли в нем ровно три цифры 3.

Однако отвечал Прокопий только в двоичный системе счисления. Он отвечал «1», если в числе есть три цифры 3, и «0», если нет.

Как-то раз один из самых прилежных учеников Прокопия усомнился в его и спросил его «Учитель, правда ли, что в числе n есть ровно три тройки?», на что получил ответ — число d.

Напишите программу, которая скажет, ошибся учитель, или же был прав в своём ответе.

Формат входных данных
С клавиатуры вводятся два целых числа n и d (∣∣n∣∣≤109, d=0 или d=1).

Формат выходных данных
Ваша программа должна вывести «YES», если мудрец ответил правильно, или «NO», если нет.
входные данные
30303 1
30303 0
12345 1
выходные данные
YES
NO
NO

Показать ответ
Ответ:
ANGELINA69Z
ANGELINA69Z
10.01.2020 13:26
Отсортируйте массив по не возрастанию (вместе с индексами) и подсчитайте сумму  s = s+b[i]*(i+1) - индексы от нуля.
Это и будет наименьшее время.

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
   int n,i,s;
   bool priz=true;
   cin>>n;
   int b[n],c[n];
   for (int i=0; i<n; i++)
   { 
       cin>>b[i];
       c[i]=i+1;
   }  
// сортировка масcива по не возрастанию
   while (priz)
   {
     priz=false;
     for (int i=0; i<n-1; i++)
     {
       if (b[i]<b[i+1])
       {
         swap(b[i],b[i+1]);
         swap(c[i],c[i+1]);              
         priz=true;
       }
     } 
   }
   s=0;
   for (int i=0; i<n; i++)  s+=b[i]*(i+1);
   cout<<s<<endl;
   for (int i=0; i<n; i++)  cout<<c[i]<<" ";
   cout<<endl;
   system("pause");
   return(0);
}

Ввод - вывод:

6
10 21 13 36 41 9
332
5 4 2 3 1 6
0,0(0 оценок)
Ответ:
3586460
3586460
28.02.2022 13:34
Var
a : array[1..10] of word;
max : word;
begin
   
  randomize;
 
  for I : byte := 1 to 10 do
  a[i] := random(1, 60000);

  max := 0;
  for I : byte := 1 to 10 do
  if a[i] > max then max := a[i];

  writeln(max*3);

end.

Добавлю и объяснение. Алгоритм заполняет целочисленный массив из десяти элементов случайными числами. Возможны диапазон числе: от 1 до 60000. Затем в следующем цикле выискивается максимальное число, которое выдал генератор случайных чисел. В строке writeln выводится значение этого числа умноженное на три.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота