题目

链接

题意:对于一个$n \times m$的矩阵的最外一圈,问是否能用$k \times 1$的方块填满

分析

考虑左右两边的情况,分类讨论,切记考虑所有可能的情形。

 #include<bits/stdc++.h>
using namespace std; int n, m; bool judge(int k)
{
if(k == ) return true;
if(k == )
{
if(n % )
{
if((m-) % k == ) return true;
if((m-) % k == && m % k == ) return true;
}
else
{
if((m-) % k == ) return true; //两边放满
if(m % k == ) return true; //两边都不放满
if((m-) % k == ) return true; //一边放满,一边不放满
}
}
else
{
if(n % k == )
{
if((m-) % k == ) return true;
//if(m % k == 0) return true;
}
if(n % k == )
{
//printf("%d %d %d\n", n, m, k);
if((m-) % k == ) return true; //两边对齐
if((m-) % k == && m % k == ) return true; //两边交错
}
if(n % k == )
{
if(m % k == ) return true;
}
}
return false;
} int main()
{
while(scanf("%d%d", &n, &m) == )
{
int T;
scanf("%d", &T);
while(T--)
{
int tmp;
scanf("%d", &tmp);
if(judge(tmp)) printf("YES\n");
else printf("NO\n");
}
}
return ;
}
05-02 02:46