โจทย์: หน้าจอมี n พิกเซล หาขนาดสี่เหลี่ยมผืนผ้า: แถว (a) ≤ คอลัมน์ (b) และ b-a น้อยที่สุด
Input: n=12 → Output: (3, 4)
ขั้นตอนแก้
i := sqrt(n) while n % i != 0: i-- return (i, n/i)
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
void solve(int n) {
int i = sqrt(n);
while (n % i) i--;
cout << i << ", " << n / i;
}
int main() {
int n = 12;
solve(n);
}Input
12
Output
3, 4