Какое наименьшее количество плит понадобится для замощения площади? - C (СИ)
Формулировка задачи:
Вход
6 6 4Выход
4 Вот код:#include<stdio.h>
main()
{
int m,n,a;
scanf("%d%d%d",&m,&n,&a);
printf("%.f", ceil(m/(float)a)*ceil(n/(float)a));
}Решение задачи: «Какое наименьшее количество плит понадобится для замощения площади?»
#include <stdio.h>
int main()
{
long long n, m, a, x, y;
long long result;
scanf("%lld", &n);
scanf("%lld", &m);
scanf("%lld", &a);
if (n % a == 0) {
x = n / a;
}
else {
x = n / a;
x++;
}
if (m % a == 0) {
y = m / a;
}
else {
y = n / a;
y++;
}
result = x * y;
printf("%lld", result);
return 0;
}
Объяснение кода листинга программы
В этом коде сначала запрашиваются входные данные: количество плиток в одном направлении (n), количество плиток в другом направлении (m) и размер одной плитки (a). Затем код проверяет, можно ли замостить площадь горизонтально. Если количество плиток в одном направлении делится на размер одной плитки без остатка, то это возможно. В этом случае переменной x присваивается значение количества плиток в одном направлении, разделённое на размер одной плитки. Если же остаток от деления не равен нулю, то площадь нельзя замостить горизонтально, и тогда переменной x присваивается значение количества плиток в одном направлении, увеличенное на единицу. Аналогично проверяется возможность замостить площадь вертикально. Если количество плиток в другом направлении делится на размер одной плитки без остатка, то это возможно. В этом случае переменной y присваивается значение количества плиток в другом направлении, разделённое на размер одной плитки. Если же остаток от деления не равен нулю, то площадь нельзя замостить вертикально, и тогда переменной y присваивается значение количества плиток в другом направлении, увеличенное на единицу. Затем площадь рассчитывается как произведение количества плиток в одном направлении на количество плиток в другом направлении, и результат выводится на экран.