e-olymp 2612. Разрезание на квадраты

Задача

Полоска бумаги имеет размеры [latex]A×B[/latex]. Каждый раз от нее отрезается квадрат максимального размера до тех пор, пока не получится квадрат. Сколько квадратов получится?

Входные данные

Программе даны числа [latex]A[/latex] и [latex]B[/latex] [latex](1 ≤ A, B ≤ 10^9).[/latex]

Выходные данные

Требуется вывести количество квадратов.

Тесты

Входные данные Выходные данные
12 4 3
15 3 5
20 20 1
8 12 3

Код программы

 

Решение задачи

Нам было дана высота и ширина полоски бумаги. Есть три варианта:

  • Высота равна ширине
  • Высота больше ширины
  • Высота меньше ширины

В первом случае нам надо вывести на экран единицу. Во втором случаем начинаем вычитать a - b до того момента, как a не будет меньше b или a не будет равняться 0. В третьем случае начинаем вычитать b - a до того момента, как b не будет меньше a или b не будет равняться 0.

Ссылки

  • Задача на сайте e-olymp
  • Код решения в Ideone

Related Images:

3 thoughts on “e-olymp 2612. Разрезание на квадраты

    • Интересно, Вы догадались, что оставшийся квадрат будет иметь размер НОД(a,b)? Я это к тому, что мы рассматривали алгоритм Евклида и там вместо того, чтобы много раз отнимать — делят нацело. А дальше работают с остатком от этого деления. Т.е. циклы в строках с 12 по 19 излишни. Попробуйте сделать хитрее, вы же не глупее какого-то там древнего Евклида?
    • Ссылка на задачу ведет почему-то на какой-то «Кондиционер Степана».
    • Постоянно удаляю у Вас кучу пустых строк и переходов на новый абзац в середине предложения. Может их вообще не вставлять почем зря? Также как и всякие em и strong для формул.
    • Конечно можно загружать аватар на сайт, но лучше на gravatar.com. Тогда почта будет привязана к аватарке на многих сайтах.
  1. Хорошо.
    — Теперь избавьтесь от break и continue. Их использование крайне нежелательно поскольку они запутывают код. В данном случае более чем достаточно одного оператора цикла и одного условного оператора.
    — Вы знаете об операциях += и %=?
    — Не ленитесь ставить пробелы между знаками операций в коде. Это как пробелы между словами в обычном тексте. Без них можно как-то разобраться, но напрягает.

  2. Хорошо. Я зачту эту работу в честь праздника 🙂
    Хотя ожидал, что в факторизации своего кода Вы зайдете чуть дальше:

Добавить комментарий