题解 P6483 【[COCI2010-2011#4] PARKET】
这道题啊,主要就是用数学分析。
我们可以得到好像原本是能解的但是有点麻烦。
要得到
这个公式我们可以理解成把外面的一圈分成全等的两个部分然后来补位。
图中外面那一圈像这样分成了全等的两半,这5格的面积可以对应1A的左边(上边也行)、2A的左边、3A的左边、1B的上边和1C的上边,差1A的上边(或者左边)和1D的上边就可以凑成整个图形的周长的一半,一共要补两个单位的边。
至于
int r,b;
cin>>r>>b;
int c=r/2+2;
int area=r+b;
之后,就可以枚举m、n,得到这两个数。
for(int i=c-1;i>0;i--)//i是n,(c-i)是m
{
if((c-i)*i==area)//如果n*m=面积
{
cout<<i<<" "<<c-i;那就输出n和m,按照枚举的顺序可以知道这组就是n的最大值。
break;
}
}
谢谢大家~