trenter
30.06.2022 15:20

на с++ решить! Ящики
Там две коробки. В первом ящике находятся шары a, а во втором-шары b (0 < a + b < 2147483648). Можно перемещать шарики из одной коробки в другую. Из одной коробки в другую нужно переместить столько шаров, сколько уже содержится в другой коробке. Вы должны определить, можно ли переместить все шары в одну коробку.

Ввод

Каждая строка содержит два целых числа a и b, разделенных пробелом.

Выход

Для каждого теста выведите в отдельной строке количество ходов, необходимых для перемещения всех шаров в одну коробку, или -1, если это невозможно.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Акинаки
06.01.2023 04:56
Option Explicit

Sub aaa()
    Const n = 5
    Dim A(1 To n, 1 To n) As Long, E(1 To n, 1 To n) As Long
    Dim i As Integer, j As Integer, k As Integer
    ' инициализация матриц
    For i = 1 To n
        For j = 1 To n
            If i = j Then
                A(i, j) = 0 ' глупо тут вычислять i-j
                E(i, j) = 1
            Else
                A(i, j) = i - 2 * j
                E(i, j) = 0
            End If
        Next j
    Next i
    ' A^2 - просто умножение матрицы самой на себя
    Dim B(1 To n, 1 To n) As Long
    For i = 1 To n
        For j = 1 To n
            B(i, j) = 0
            For k = 1 To n
                B(i, j) = B(i, j) + A(i, k) * A(k, j)
            Next k
        Next j
    Next i
    ' 3A^2 - A + 7E
    For i = 1 To n
        For j = 1 To n
            B(i, j) = 3 * B(i, j) - A(i, j) + 7 * E(i, j)
        Next j
    Next i
    ' Поиск столбца B с максимальной суммой модулей элементов
    Dim S As Long, Max As Long, jj As Long
    Max = -1000000
    For j = 1 To n
        S = 0
        For i = 1 To n
            S = S + Abs(B(i, j))
        Next i
        If S > Max Then
            Max = S
            jj = j
        End If
    Next j
    ' Вывод на лист Excel
    Range(Cells(1, 1), Cells(n + 1, 2)).Clear
    Cells(1, 1) = "Столбец " + CStr(jj)
    For i = 1 To n
        Cells(i + 1, 1) = B(i, jj)
    Next i
End Sub
0,0(0 оценок)
Ответ:
ппопцгуарг
30.03.2021 21:15
Если число заканчивается на 5 или 0, то по признакам делимости оно кратно 5.

1. Глупый школьный вариант

Перебираем все числа в заданном диапазоне и если встречаем кратное 5, прибавляем его к сумме.

var
  i,s:integer;

begin
  s:=0;
  for i:=1 to 200 do
    if i mod 5=0 then s:=s+i;
  Writeln(s)
end.

Результат:
4100

2. Более умный школьный вариант с циклом while

Первое число, кратное 5 - это 5. А дальше прибавляем по 5 к сумме и ничего не нужно проверять.

var
  i,s:integer;

begin
  i:=5; { первое подходящее число }
  s:=i;
  while i<200 do begin
    i:=i+5;
    s:=s+i
    end;
  Writeln(s)
end.

3. Еще более умный школьный вариант с циклом for

От предыдущего отличается получения нужных чисел.
Замечаем, что ряд 5, 10, 15, 20, ... можно получить из чисел 1, 2, 3, 4, ..., умножая их на 5. И таких чисел будет 40.

var
  i,s:integer;

begin
  s:=0;
  for i:=1 to 40 do s:=s+5*i;
  Writeln(s)
end.

4. Современный вариант на современном Паскале

Генерируем последовательность нужных чисел и находим сумму её элементов.

// PascalABC.NET 3.3, сборка 1625 от 17.01.2018
// Внимание! Если программа не работает, обновите версию!

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