欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-10 18:57:21
...

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

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;
}