每日一题 No.12 生成最小矩形

来源:互联网 发布:数据分析师教程 编辑:程序博客网 时间:2024/05/20 23:02

本题要求:

输出一个由t个’*’组成的矩阵
要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。

输入格式:

输入一个t,代表’*’的个数

输出格式:

第一行输出m n 以空格分割
接下来输出m行
每行n个输出’*’

输入样例:

156

输出样例:

13 12

************************************************************************************************************************************************************

解题思路 :

Created with Raphaël 2.1.0开始t是否被a整除计算另一个因子二个因子相减小于min将二个因子赋值给m和na++yesnoyes

Created with Raphaël 2.1.0是否m比n小交换m和nyes

代码 :

#include <iostream>#include <cmath>using namespace std;int main() {    int t;    cin >> t;    int a = 1;    double s = sqrt(t);    int min = 0x7f7f;    int n,m;    while(a <= s) {        if (t % a == 0) {            int p = t / a;            if (min > abs(p - a)) {                min = p - a;                m = p;                n = a;            }        }        a++;    }    if (m < n) {        swap(m, n);    }    cout << m << " " << n << endl;     for (int i = 0; i < m; i++) {        for (int j = 0; j < n; j++) {            cout << '*';        }        cout << endl;    }    return 0;}
0 0
原创粉丝点击