#include<iostream> #include<cmath> using namespace std; int main() { int s; cin>>s; int c,k; int t=0; for(int i=1;i<=s;i++)//kuan { for(int j=s/i;j>=i;j--)//chang { if(i*j==s) { t=min(t,abs(i-j)); k=i; c=j; } } } cout<<k<<" "<<c<<endl; }
首先明确要求:
长和宽最大程度接近->以绝对值最小代替
宽不能大于长(这里有一个小小的坑)
一般矩形我们很容易解决(控制宽长关系在循环中即可,简洁)
这时候你就要想:正方形算不算矩形呢?肯定的,但是正方形长宽相等啊,所以
坑就在这:宽≤长
再想,数据范围有1,那个1你怎么解决?
我是直接扩大i遍历范围,懒