P4904题解
newbeeglass · · 题解
一开始以为这是一道找规律的题,后面发现
大矩形的面积一定为
因为要找两边最接近的,那就从正方形开始,也就是从
我们可以先定一条边为
全部判断合法后,开始记录旋转照片的数量。前面我们已经将
AC code:
#include <bits/stdc++.h>
using namespace std;
int main(){
int ans=0x3f;
int n;
bool flag=0;
cin>>n;
int s=sqrt(12*n);//从s开始枚举
for(int i=s;i>=3;i--){
if((12*n)%i==0){//i肯定是整数,保证另一边是整数再进行运算
int a,b;
if(i%3==0){
a=i;
b=(12*n)/i;
}
else{
b=i;
a=(12*n)/i;
}
for(int j=0;j<=b/4;j++){
if((b-4*j)%3==0){//保证其为整数
ans=min(ans,j*a/3);
ans=min(ans,n-j*a/3);//由于我只将a作为3的倍数的边,所以两种情况都要判断
flag=1;
}
}
}
if(flag){
break;//找到的就是边长最接近的,直接break
}
}
cout<<ans;
return 0;//养成好习惯
}