Olegg9
23.03.2022 17:38

Археологи раскопали древний храм, ко входу в который ведет лестница, шириной в 1 (один) метр, из м ступенек различной длины и высоты. лестница построена из каменных блоков 1x1x1 метр. археологи хотят для удобства туристов, чтобы лестница состояла из меньшего количества ступенек n. для этого они могут также устанавливать каменные блоки 1x1x1. какое минимальное количество блоков необходимо, чтобы сделать лестницу в n ступенек, если известны начальная длина и высота каждой ступеньки. высоты и длины ступенек новой лестницы могут различаться.

входные данные
в первой строке через пробел заданы два целых числа m и n (1 ≤ n < m ≤ 100). далее идут m строк, содержащих пару целых чисел l и h - длина и высота i-ой ступеньки соответственно (1 ≤ l, h ≤ 101). ступеньки нумеруются снизу вверх.

выходные данные
в выходной файл выведите единственное число - ответ на .

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Fazi8833
30.11.2022 09:43

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApp

{

   class Program

   {

       //Объявление  счетчика попаданий

       public int Tochek_Popalo;

       //Метод проверки, входят ли наши точки в окружность, который в конце выдает нам количество вхождений "Tochek_Popalo"

       public int ProverkaVhojdeniya(int[] Massiv_X, int[] Massiv_Y)

       {

           int Schetchik = 0;

           for (int i = 0; i < Massiv_X.Length; i++)

           {

               if (Math.Sqrt((50 - Massiv_X[i]) * (50 - Massiv_X[i]) + (50 - Massiv_Y[i]) * (50 - Massiv_Y[i])) <= 30)

                   Schetchik++;

           }

           Tochek_Popalo = Schetchik;

           return Tochek_Popalo;

       }

       //Просто метод вывода результата на консоль

       public void Vivod_Na_Konsol()

       {

           Console.WriteLine("\nТочек (x,y) попало в окружность: " + Tochek_Popalo);

       }

       static void Main(string[] args)

       {

           int[] x = new int[10]; //Создаем массив ИКСОВ из 10 элементов

           int[] y = new int[10]; //Создаем массив ИГРИКОВ из 10 элементов

           Random RandomZnacheniya = new Random();

           //цикл присваивания случайных элементов в массив [x] от 0 до 100                        

           for (int i = 0; i < x.Length; i++)

               x[i] = RandomZnacheniya.Next(0, 100);

           //цикл присваивания случайных элементов в массив [x] от 0 до 100                            

           for (int i = 0; i < x.Length; i++)

               y[i] = RandomZnacheniya.Next(0, 100);

           //Просто вывод массива [x] на экран циклом "foreach"

           Console.Write("ИКСЫ: ");

           foreach (var item in x)

               Console.Write(" " + item);

           //Просто вывод массива [y] на экран циклом "foreach"

           Console.Write("\nИГРИКИ: ");

           foreach (var item in y)

               Console.Write(" " + item);

           //Создание экземпляра класса  

           Program Peredacha = new Program();

           //Вызов и передача наших массивов в Метод "ProverkaVhojdeniya"

           Peredacha.ProverkaVhojdeniya(x, y);

           //Вызов метода "Vivod_Na_Konsol"

           Peredacha.Vivod_Na_Konsol();

       }

   }

}

Объяснение: Проверь . Вроде все верно работает.  Если что пиши или отметь как верный ответ .


Не могу составить алгоритм/найти в тырнете. Чёрт его знает, не получается запустить. Буду при многом
Не могу составить алгоритм/найти в тырнете. Чёрт его знает, не получается запустить. Буду при многом
Не могу составить алгоритм/найти в тырнете. Чёрт его знает, не получается запустить. Буду при многом
0,0(0 оценок)
Ответ:
Можно конечно поизвращаться и придумать интересный алгоритм, но можно просто написать в лоб цикл с проверкой.

#include <iostream>
int main(){
    int num_1, num_2;
    cin >> num_1 >> num_2;
    for (int i = num_1 + 1; i != num_2; i++) {
        int cur = i, num = i;
        int res = 0;
        while (cur != 0) {
            int mod_n = cur % 10;
            if (mod_n == 0) {
                break;
            }
            if (num % mod_n == 0) {
                res = 1;
            }
            else {
                res = 0;
                break;
            }
            cur /= 10;
        }
        if (res) {
            cout << i << ' ';
        }
    }
}

Коротко, в двух словах, о чем тут код. 
мы проходим по циклу от A до B, для каждого числа, в цикле проверяем, делится ли оно на цифры из которых состоит. Для этого мы запоминаем в отдельную переменную cur наше число, и проверяем остаток от деления на 10 (т.е. самую левую цифру), после мы в cur записываем тоже число, но без последней цифры.
на примере 124. проверяем на делимость на 4, потом запоминаем 12, проверяем на делимость на 2, потом запоминаем 1, проверяем на делимость на 1, потом записываем 0. Как только видим 0 прекращаем. 
Дальше в цикле есть проверка на то, что если хоть раз что-то не поделилось, то переходим к след. числу
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота