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

С РЕШЕНИЕМ! На круглом столе вплотную друг к другу лежит 2022 монеты. Два игрока ходят по очереди, за ход разрешается забрать одну монету или две или шесть монет подряд, лежащих вплотную. Тот, кто не может забрать монету, проигрывает. Кто выигрывает при правильной игре - первый или второй?

Показать ответ
Ответ:
vladiev
vladiev
09.07.2022 08:22

===== PascalABC.NET =====

function СуммаЦифр(Число: integer): integer;

begin

 Result := 0;

 while Число > 0 do

 begin

   Result += Число mod 10;

   Число := Число div 10

 end

end;

procedure ЧислоДействий(Число: integer; var Действий: integer);

begin

 Число := Abs(Число); // вдруг кто-то задал отрицательное?

 Действий := 0;

 while Число > 0 do

 begin

   Число -= СуммаЦифр(Число);

   Inc(Действий)

 end;

 if Число <> 0 then // невозможно получить 0

   Действий := -1

end;

begin

 var Число := ReadInteger('Введите число:');

 var СделаноДействий := 0;

 ЧислоДействий(Число, СделаноДействий);

 if СделаноДействий >= 0 then

   Print('Сделано действий:', СделаноДействий)

 else

   Print('Невозможно получить ноль')

end.


Программисты-информатики, нужна из некого числа вычли сумму его же цифр, после чего из результата сн
0,0(0 оценок)
Ответ:
Вероникалобова
Вероникалобова
29.03.2020 18:43

Код, который необходимо добавить, выделен на прикрепленной картинке красным прямоугольником.

Замечание: везде в коде не указан тип у vector. Необходимо указать тип, например vector<int>. В прикрепленном коде все исправлено.

Весь листинг:

#include <iostream>

#include <vector>

using namespace std;

vector<int> merge(vector<int> &A, vector<int> &B) {

   int i = 0;

   int j = 0;

   vector<int> C(A.size() + B.size());

   for (int k = 0; k < C.size(); k++) {

       // Если в массиве А все элементы закончились

       if (i == A.size()) {

           C[k] = B[j];

           j++;

           // Если в массиве B все элементы закончились

       } else if (j == B.size()) {

           C[k] = A[i];

           i++;

       } else if (A[i] <= B[j]) {

           C[k] = A[i];

           i++;

       } else {

           C[k] = B[j];

           j++;

       }

   }

   return C;

}

vector<int> merge_sort(vector<int> &V, int l, int r) {

   // Проверяем, не равна ли длина 1

   // Частный случай, при котором рекурсия завершается

   if (r - l == 1) {

       vector<int> res(1);

       res[0] = V[l];

       return res;

   }

   

   // Находим середину массива

   int m = (l + r) / 2;

   

   // Сортируем левую и правую половины независимо

   vector<int> left = merge_sort(V, l, m);

   vector<int> right = merge_sort(V, m, r);

   

   cout << l + 1 << ' '

       << r << ' '

       << right.front() << ' '

       << left.back() << endl;

   // Сливаем отсортированные половины

   return merge(left, right);

}

int main(){

   

   int n;

   cin >> n;

   vector<int> v(n);

   for (int i = 0; i < n; i++) {

       cin >> v[i];

   }

   

   // Вызов сортировки

   vector<int> v_sorted = merge_sort(v, 0, v.size());

   // Вывод результата

   for (int i = 0; i < v.size(); i++) {

       cout << v_sorted[i] << ' ';

   }

   return 0;

}


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