题目
分析
- 数格子,每3×3应该放置一个点,不足3×3也要记一个点,问至少要放几个;
- 外围一圈不计,因为Nessy太大了。
思路
换而言之,需要计算这个范围
P′=n−23×m−23
关键在于如果不足3,即剩余1或2,均需记一个点,那么应该设P个点
P=ceil(P′)=n3×m3
btw,当 xn 需要向上取整时,只需计算 x+n−1n ,证明如下。
(1)
设 x=kn(k∈N) ,则x+n−1n=kn+n−1n=(k+1)n−1n=k+1−1n
因为 0<1−1n<1 ,会被舍弃,故结果为 k .(2)
设x=kn+m(k,m∈N且0<m<n) ,则x+n−1n=kn+m+n−1n=(k+1)n+m−1n=k+1+m−1n
因为 0<m−1n<1 ,会被舍弃,故结果为 k+1 ,即向上取到最大正整数.
代码
#include <stdio.h>
int main(void)
{
int t, n, m;
scanf("%d", &t);
while (t--) {
scanf("%d%d", &n, &m);
printf("%d\n", (n/3)*(m/3));
}
return 0;
}