NEUQ 1248:方砖问题

本博客探讨了1248号问题——方砖问题,如何使用边长小于N的正方形方砖不重叠地铺满N*N的正方形房间。问题关键在于寻找最少的方砖数量。当N=4时,通过示例展示了最优的铺砖方法。题目与吃薯条问题类似,但重点在于找出只需除一次并计算pow的数学规律。博客强调了解题时深入理解题意、分析数学模型的重要性,而非直接编程试错。

1248: 方砖问题

描述
题目描述:

用边长小于N的正方形方砖(注意,不要求所有的方砖大小相同,请看样例说明)不重叠地铺满N*N的正方形房间,最少要几块方砖。

输入:

第一行是一个整数T,表示测试数据的组数,接下来的T 行,每一行是一个N(2<=N<=100)

输出:

对于每一组测试数据输出一行,为最少需要的块数。

样例输入
2 
4 
5
样例输出
4 
8
提示

当N=4时 
最优的铺砖方法 
AABB 
AABB 
CCDD 
CCDD 
A,B,C,D为四块方砖的代号。 
其他的铺砖方法,例如: 
AAAB 
AAAC 
AAAD 
EFGH 

需要的8块方砖,不是最少的。 

这道题和之前发的吃薯条问题有异曲同工之处,唯一的区别就是吃薯条问题考的是2^n的形式下与薯条根数最接近的情况,即每次都不断地除以二总共用的次数,而这题的最终数学规律是只需要除一次,再算pow即可。当时做的时候根本就静不下心来看题,都没有过脑子,还以为方砖还可以是浮点数,就觉得很麻烦,根本就没有尝试,有一种畏难情绪,再加上没有看到提示。后来才明白做题时大部分时间真的不是花在打代码然后再出错试错,而是应该动一下笔,认真地分析清楚题意,得出最根本的数学公式,或者建立好可行的模型,而不是上来就做,这样非常盲目。

#include<stdio.h>
#include<math.h>
int main()
{
    int i,n,a,b,r;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a);
        b=(int) (a/2.0+0.5);
        r=pow(2,b);
        printf("%d\n",r);
    }

}


521219124816561 正确100%C
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值