题目传送门:
A big company decided to launch a new series of rectangular displays, and decided that the display must have exactlyn pixels.
Your task is to determine the size of the rectangular display — the number of lines (rows) of pixelsa and the number of columns of pixels b, so that:
- there are exactly n pixels on the display;
- the number of rows does not exceed the number of columns, it means a ≤ b;
- the difference b - a is as small as possible.
The first line contains the positive integer n (1 ≤ n ≤ 106) — the number of pixels display should have.
Print two integers — the number of rows and columns on the display.
8
2 4
64
8 8
5
1 5
999999
999 1001
In the first example the minimum possible difference equals 2, so on the display should be 2 rows of 4 pixels.
In the second example the minimum possible difference equals 0, so on the display should be 8 rows of 8 pixels.
In the third example the minimum possible difference equals 4, so on the display should be 1 row of 5 pixels.
题意:将n分解成a*b,要求a<=b 且a和b尽量接近
思路:从平方根向两头找即可
#include<bits/stdc++.h> using namespace std; #define LL long long #define m(a) memset(a,0,sizeof(a)) int main() { int n; while(~scanf("%d",&n)) { for(int i=(int)sqrt(n*1.0);i>=1;i--) { if(n%i==0) { printf("%d %d\n",i,n/i); break; } } } return 0; }