像素个数 = 长 * 宽
所以:长 , 宽 为像素个数 n 的约数
约数是成对出现的
比如 8 = 1 * 8 , 8 = 2 * 4
分析可知 约数对的重复出现在 <= 一个数的平方根
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n;cin>>n;
int cnt = floor(sqrt(n));//获得最中间的约数
//从最中间开始寻找宽
while(1){
if(n % cnt == 0) break;
cnt--;
}
//长可根据宽求出
cout<<cnt<<" "<<n/cnt;
return 0;
}
京公网安备 11010502036488号