profile
Размещено 5 лет назад по предмету Информатика от sansanma1

Даю много баллов, только с полным объяснением 
Дана клетчатая фигура в виде лестницы, содержащей n ступенек (на рисунке приведён пример для n=11).Сколько значений n, удовлетворяющих неравенству 300<n<700 , для которых данную лестницу можно разрезать на уголки из трёх клеток?

  1. Ответ на вопрос
    Ответ на вопрос дан Змей24
    1) Методом перебора определяем, что на уголки можно разрезать треугольники со стороной 2, 6, 8, 9, и 11. Треугольники со сторонами 3 и 5 разрезать не получится.
    2) Замечаем, что из двух уголков можно составить прямоугольник 2*3 (назовем его "универсальный кирпичик"), а из 12 уголков - квадрат 6*6.
    3) Теперь мы можем разрезать большую фигуру на квадраты 6*6 и треугольники со стороной 6. В остатке будут "полоски" шириной n и высотой 1, 2, 3, 4, 5.
    4) Замечаем, что из универсальных кирпичиков - прямоугольников 2*3 можно составить такие фигуры, как 6*11 (6+3+2), 6*9 (6+3), 6*2 (2 кирпичика, лежащих горизонтально).
    5) Итак, чтобы разрезать большую фигуру на уголки, мы разрезаем ее сверху вниз на квадраты и треугольники со стороной 6, пока не порежем всю фигуру, либо получим в остатке полоску высотой 2, 9, или 11 и шириной n.
    6) Из шага (1) нам известно, что треугольники размером a = 2, 9 и 11 можно порезать на уголки. После этого останется полоска размером (n - a)*a, но (n - a) делится на 6, поэтому мы можем порезать ее на прямоугольники 2*3, как следует из шага 4.
    7) Конечно, фигуру можно разрезать на уголки только тогда, когда число ее клеток кратно 3.

    uses math;

    var i: integer;
    var s: integer;
    var y: integer;
    var n: integer;

    begin
            y := 0;
            n := 0;

            for i := 301 to 699 do begin
                    { число клеток (сумма арифметической прогрессии) кратно 3 }
                    if i * (i + 1) mod 6 = 0 then begin
                            s := i;
                            while s > 0 do begin
                                    if (s = 0) or (s = 2) or (s = 9) or (s = 11) then begin
                                            y := y + 1;
                                            break
                                    end else begin
                                            { никогда не выполняется }
                                            if s < 6 then begin
                                                    n := n + 1;
                                            end;
                                    end;
                                    s := s - 6;
                            end;
                    end;
            end;

            writeln();
            writeln('yes: ', y);
            writeln('no: ', n);
    end.


    Ответ: 200.


    1. Ответ на вопрос
      Ответ на вопрос дан Змей24
      Кому не понравилось решение? Вот еще более подробное: https://znanija.com/task/27210656
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.