【题目描述】
Dave最近收集了一些有趣的鹅卵石,他想把它们排成一个矩阵,但希望矩阵的行数与列数和最小。请编一个程序帮助Dave找到这样的方案。
【输入格式】
输入文件中只有一行,包含一个自然数N(1 ≤ N ≤ 100),为要排列的鹅卵石数。
【输出格式】
输出文件中输出所有可能的方案,每行包括两个被空格分开的数,分别是行数和列数。输出方案按行数从小到大的顺序输出。
【输入样例1】
2
【输出样例1】
1 2
2 1
【输入样例2】
5
【输出样例2】
2 3
3 2
【输入样例3】
14
【输出样例3】
3 5
4 4
5 3
#include<iostream>
using namespace std;
int a[1000],b[1000];
int main(){
int n,mina=INT_MAX,k=1;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i*j>=n){
a[k]=i;
b[k]=j;
mina=min(mina,i+j);
k++;
}
}
}
for(int i=1;i<k;i++){
if(a[i]+b[i]==mina){
cout<<a[i]<<" "<<b[i]<<endl;
}
}
return 0;
}