L1-006 连续因子----详细题解

不学?
将来,别人壁咚的墙,就是你砌的

在这里插入图片描述

题目链接
连续因子
AC代码,里面有详细的注解

#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
int main()
{
    ll n;
    cin>>n;
    int len=0,start=0; ll pro=1;  //len用来记录连续因子长度;start用来记录起始位置;Pro用作连乘迭代;
    for (int i = 2; i <= sqrt(n); ++i) {  //连续因子从2开始进行枚举
        pro=1;
        for (int j = i; pro*j <= n; ++j) {  //Pro*j用来控制第二层循环退出;
            pro*=j;  // 连乘迭代;
            if (n%pro==0&&j-i+1>len)  //n%pro==0用来记录连乘因子是否为n的连乘因子,当j-i+1的长度大于len才交换,这样就可以满足题目的要求最小连乘因子
                {  // 这个时候就要记录连乘因子的起始位置
                    start=i;
                    len=j-i+1;
                }
            }
        }
    if (start==0)  //如果start==0,说明能为一个素数
        {
            start=n;
            len=1;
        }
    cout<<len<<endl<<start;
    for (int k = start+1; k < start+len; ++k) {
        cout<<"*"<<k;
    }
    cout<<endl;
    return 0;
}
发布了28 篇原创文章 · 获赞 58 · 访问量 3878

猜你喜欢

转载自blog.csdn.net/weixin_45882303/article/details/104851912