首页 > 其他 > 详细

L1-006 连续因子

时间:2020-10-28 11:42:12      阅读:28      评论:0      收藏:0      [点我收藏+]

技术分享图片

题解

  该题可以直接暴力枚举,首先讲一下思路八。

       给定一个数 n ,从 2 开始从小到大进行枚举,当发现一个数能够被整除时,可依据该数再进行连续枚举,注意 n 需要备份,且备份的数也需不断连除,每次记录只需起点和最大长度即可。刚开始我还在用数组存下来,当时我在想啥呢/(ㄒoㄒ)/~~。

#include <iostream>
#include <cmath>
using namespace std;

int n, m, temp;
int maxcount = 0, start = 0;

int main()
{
    cin >> n;
    m = sqrt(n);
    //只需存储start和maxcount 
    for (int i = 2; i <= m; ++i) {
        temp = n;
        int t = 0;
        int j = i;
        while (temp % j == 0) {
            temp /= j;
            ++j;
            ++t;
        }
        if (t > maxcount) {
            maxcount = t;
            start = i;
        }
    }
    if (maxcount) {
        cout << maxcount << endl;
        while (maxcount--) {
            if (maxcount == 0) cout << start;
            else cout << start << "*";
            ++start;
        }
    }
    else {
        cout << 1 << endl << n;
    }
    cout << endl;
    return 0;
}

 

L1-006 连续因子

原文:https://www.cnblogs.com/xuwenchao/p/13889505.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!