Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 12.09.2023
Сообщений: 15

Найти количество квадратов, которые можно отрезать от прямоугольника

19.09.2023, 20:32. Показов 2164. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
От прямоугольника a×b отрезают квадраты со сторонами, равными наименьшей стороне, пока это возможно. Затем вновь отрезают квадраты со стороной, равной наименьшей стороне получившегося прямоугольника и т.д. На какие квадраты и на сколько квадратов будет разрезан прямоугольник?

Формат ввода
В одной строке через пробел записаны длины сторон прямоугольника a и b.

Гарантируется, что числа положительны.

Формат вывода
В каждой новой строке через пробел записаны длина стороны квадрата и количество таких квадратов.

В последней строке выводится общее количество всех квадратов.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.09.2023, 20:32
Ответы с готовыми решениями:

Количество квадратов, на которые можно разрезать данный прямоугольник, если каждый раз отрезать квадрат max площади
Дан прямоугольник с линейными размерами n, m, выражающимися целыми числами. Составить рекурсивную функцию подсчета количества квадратов, на...

Сколько квадратов можно отрезать от прямоугольника?
Дан прямоугольник с размерами 543x130 мм. Сколько квадратов со стороной 130 мм можно отрезать от него?

Сколько квадратов со стороной z можно отрезать от прямоугольника
Дан прямоугольник с размерами x * y. Напишите программу, вычисляющую, сколько квадратов со стороной z можно от него отрезать. Формат...

11
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
19.09.2023, 20:45
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int main()
{
    unsigned int a, b, cnt, sum;
    std::cin >> a >> b;
    
    sum = 0;
    while( a != b )
    {
        cnt = 0;
        if( a < b )
            std::swap( a, b );
        while( a > b )
        {
            a -= b;
            ++cnt;
        }
        std::cout << b << ' ' << cnt << std::endl;
        sum += cnt;
    }
    std::cout << sum << std::endl;
 
    return 0;
}
0
Нарушитель
10225 / 5655 / 1257
Регистрация: 12.03.2015
Сообщений: 26,180
19.09.2023, 21:04
Цитата Сообщение от aleksander2005 Посмотреть сообщение
Гарантируется, что числа положительны.
Числа целые или вещественные?
0
Заблокирован
19.09.2023, 21:21
Цитата Сообщение от Evgen173 Посмотреть сообщение
C++
14
15
16
17
18
while( a > b )
        {
            a -= b;
            ++cnt;
        }
А может все же поделить ?
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
19.09.2023, 21:37
SmallEvil, кажется так можно без цикла
C++
1
2
cnt = a/b;
a -= cnt*b;
0
Заблокирован
19.09.2023, 21:53
Цитата Сообщение от Evgen173 Посмотреть сообщение
кажется так можно без цикла
да
и еще осталось поправить условие цикла.
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
19.09.2023, 22:00
SmallEvil, а что не так? Отрезаем, пока a с b не сравняется
0
Заблокирован
19.09.2023, 22:07
Цитата Сообщение от Evgen173 Посмотреть сообщение
Отрезаем, пока a с b не сравняется
__________________
Они могут не сравнятся. Плюс пропустите последний квадрат.

Добавлено через 4 минуты
Простой пример :
input :
Code
1
100 6
output :
Code
1
2
3
4
6 16 [100 6]
4 1 [4 6]
2 2 [4 2]
19
В квадратных скобках прямоугольник который мы делим на данной итерации.
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
19.09.2023, 22:20
SmallEvil, не могли бы привести пример прямоугольника, от которого отрезанием меньшей из сторон нельзя получить квадрат? А также, последний квадрат не пропускается, как я понял из условия, квадрат резать не нужно, нужно резать прямоугольник, пока он не станет квадратом.

Добавлено через 3 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
Простой пример
Блин, точно. С делением по-другому слегка работать то будет

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
    unsigned int a, b, cnt, sum;
    std::cin >> a >> b;
    
    sum = 0;
    while( a != b )
    {
        cnt = 0;
        if( a < b ) std::swap( a, b );
        cnt = a/b - (!(a%b));
        a -= cnt*b;
        std::cout << b << ' ' << cnt << std::endl;
        sum += cnt;
    }
    std::cout << sum << std::endl;
 
    return 0;
}
0
Заблокирован
19.09.2023, 22:27
Evgen173, по прежнему неверный ответ.
Получится же 19 квадратов, а у вас 18.
Последний квадрат вы недосчитали.
Не рыбный день у вас )
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
19.09.2023, 22:38
SmallEvil, мне из условия кажется, что отрезать нужно только от прямоугольника) Может я не прав и при a==b все равно должен быть отрезан один квадрат со стороной a, тогда без вот этих вот - (!(a%b)) и while( a != b && a )

Добавлено через 3 минуты
Хотя блин, вопрос "на сколько квадратов будет разделен", так что да, последний нужно считать

Добавлено через 22 секунды
Цитата Сообщение от SmallEvil Посмотреть сообщение
Не рыбный день у вас )
В общем тут поспорить трудно
0
Заблокирован
19.09.2023, 22:42
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main()
{
   unsigned int a, b, cnt = 1, sum = 0;
   std::cin >> a >> b;
   if( a < b )
      std::swap( a, b );
   while(a && b)
   {
      cnt = a/b;
      a %= b;
      std::cout << b << ' ' << cnt << std::endl;
      sum += cnt;
      std::swap( a, b );
   }
   std::cout << sum << std::endl;
}
Добавлено через 4 минуты
Хватит даже :
C++
1
while(b)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2023, 22:42
Помогаю со студенческими работами здесь

На прямоугольнике размещено максимально возможное количество квадратов. Найти количество квадратов и площадь незанятой части прямоугольника
1.Даны целые положительные числа A,B,C. На прямоугольнике размером A х B размещено максимально возможное количество квадратов со стороной C...

алгоритм нахождения числа квадратов, которые можно получить из прямоугольника
Здравствуйте! Помогите с составлением алгоритма для решения задачи. УсловиеОдна замечательная старушка уже много лет радует своих внуков...

Найти количество квадратов, на которые можно разрезать данный прямоугольник
Помогите, пожалуйста! Задача: стороны прямоугольника заданы натуральными числами n и m. Найти кол-во квадратов (стороны которых выражены...

Найти наименьшее количество квадратов, необходимых для заполнения прямоугольника
Рекурсия. Даны натуральные числа а и b, обозначающие стороны некоторого прямоугольника. Найти наименьшее количество квадратов,...

Найти наименьшее количество квадратов, необходимых для заполнения прямоугольника
Срочно! Даны натуральные числа а и b, обозначающие стороны некоторого прямо¬угольника. Найти наименьшее количество квадратов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru