题意:这里分析的很好:点击打开链接
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int main(){
int n,m;
while (scanf("%d%d",&n,&m) != EOF && n+m){
int p = n;
if (n > m)
p = m;
if (p == 1)
printf("%d knights may be placed on a %d row %d column board.\n",n+m-p,n,m);
else if (p == 2){
p = n+m-p;
int ans = p/4*4;
if (p%4 >= 2)
ans += 4;
else ans += p%4*2;
printf("%d knights may be placed on a %d row %d column board.\n",ans,n,m);
}
else
printf("%d knights may be placed on a %d row %d column board.\n",(n*m+1)/2,n,m);
}
return 0;
}