C++题,洛谷,希望有人回答。

小明在学走路,他妈妈担心他摔跤,准备在地板上划定一块区域并平铺上一层泡沫垫。已知这个区域为一个矩形,且面积为 n * m;每块泡沫垫为正方形,且大小为 a * a。

他妈妈是个强迫症,要求指定区域一定要被完全覆盖(泡沫垫实际覆盖的面积可以大于指定的区域),不允许对泡沫垫进行裁切,且要求泡沫垫的两边必须与区域的两边平行。

请你求出所需的泡沫垫的最少数量。
例子:红色为指定的地板区域 3 * 7 ,蓝色为铺上的泡沫垫 2 * 2。至少需要 8 块泡沫垫。

我自己的代码(没写完):

using namespace std;
int main()
{
    double a,b,c,d;
    cin>>a>>b>>c;
    d=a*b;
    if(d%(c*c)=0)
    {
        cout<<(a*b)/(c*c);
    }
    else
    {
        cout<<
    
    }    
}

cout<<(n/a+(n%a==1?1:0))*(m/a+(m%a==1?1:0))

#include <iostream>
using namespace std;
int main()
{
    int a,m,n;
    int l1,l2;
    cin>>m >> n>>a;
    if(m%a!=0)
        l1 = m/a +1;
    else
        l1 = m/a;
    if(n%a != 0)
        l2 = n/a+1;
    else
        l2 = n/a;

    cout << "块数:" << l1*l2 << endl;
    return 0;
}

不需要那么复杂,给你一个优雅的算法,不需半个条件句

    double a, b, c,d;
    cin >> a >> b >> c;
    d = 1.0 / 3 * 3;
    cout <<"需要"<< ((int)(a / c + d))*((int)(b / c + d))<<"块";

运行结果

img