问”L"型的块能不能填满长为n宽为m的矩形,如果不能输出最少剩余多少
找规律:
(1) n*m 能被8 整除输出Yes
(2)n*m不能被8 整除,(n*m)%8 >4 输出 (n× m)%8-4,其余输出(n× m)%8;
(3)n和m中有一个为1,就输出另一个。
需要用到大数,char数组进行输入
代码:
#include <stdio.h>
#include <string.h>
int change(char *str)
{
int len=strlen(str);
int i=1,k=1;
int ans=0;
while(len-i>=0&&i<=3)
{
ans+=(str[len-i]-'0')*k;
k*=10;
i++;
}
return ans;
}
int main()
{
char stra[101],strb[101];
while(scanf("%s %s",stra,strb)!=EOF)
{
int n,m;
n=change(stra);
m=change(strb);
if(!strcmp(stra,"1")||!strcmp(strb,"1"))//这一步,换成(n==1||m==1 )就是WA,不知道为什么,
{
printf("%s\n",!strcmp(stra,"1")?strb:stra);
continue;
}
int t=(n*m)%8;
if(t>4) t-=4;
if(t==0)
printf("Yes\n");
else
printf("%d\n",t);
}
return 0;
}