aleksandrbersh0
24.04.2021 16:14

Представьте следующую строку в виде, в котором оно записано в памяти компьютера (с таблицы ascii): люблю тебя, петра творенье!

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
kristinalyapina1
03.08.2020 13:16
#include <iostream>
#include <list>

using namespace std;

int main() {
    list<int>mylist;
    //Делаем со списком, что хотим
    mylist.push_back(1);
    mylist.push_back(2);
    mylist.push_back(3);
    mylist.push_back(-4);
    mylist.push_back(5);
    for (auto i : mylist) {
        cout << i << " ";
    }
    cout << "\n";
    //Удаляем последний отрицательный элемент
    auto it = mylist.end();
    while (*it > 0) {
        if (it == mylist.begin()) {
            cout << "Not found.\n";
            return 0;
        }
        it--;
    }
    //Делаем со списком, что хотим
    mylist.erase(it);
    for (auto i : mylist){
        cout << i << " ";
    }
    return 0;
}
0,0(0 оценок)
Ответ:
Гиперборея
25.03.2022 05:46

Для того, чтобы в последовательности из n элементов удалить последний путем вычеркивания каждого k-го элемента, n должно быть кратно k - это и есть условие успешного удаления. Запишем его в виде n mod k = 0, где mod - операция получения остатка целочисленного деления n на k.

Если n не кратно k, то будут вычеркнуты [n / k] элементов последовательности. Здесь [ ] - обозначение операция взятия целой части числа (антье), введенное в математику К. Гауссом.

После вычеркивания [n / k] элементов, в последовательности останется n₁ = n - [n / k] элементов. Если повторять этот процесс, то либо на шаге m будет вычеркнут последний элемент, либо количество элементов станет меньше k.

Рассмотрим приведенный в задании пример.

n=13, k=2

n mod k ≠ 0, поэтому полагаем n₁ = n - [n / k] = 13 - [13 / 2] = 13 - 6 = 7

n₁ mod k ≠ 0, поэтому полагаем n₂ = n₁ - [n₁ / k] = 7 - [7 / 2] = 7 - 3 = 4

n₂ mod k = 0, следовательно на третьем шаге вычеркивания мы получим нужный результат.

PascalABC.NET 3.4.2, сборка 1884 от 24.11.2018Внимание! Если программа не работает, обновите версию!

begin

 var (n, k) := ReadInteger2;

 var m := 0;

 while n >= k do

 begin

   if n mod k = 0 then

   begin

     Print(m + 1);

     exit

   end

   else

   begin

     n := n - n div k;

     Inc(m)

   end

 end;

 Print(0)

end.

Пример13 23

Вводить данные можно как через пробел, так и построчно

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