您的位置:首页 > 其它

L1-006. 连续因子(枚举因子)

2018-03-08 22:35 239 查看
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<iostream>
#include<vector>
#define lon long long
using namespace std;
vector<lon> a;
//本答案的速度相对来说应该很快,但是提交的时候第三测试过不了,不知道为什么,如果知道的请留言。
int main()
{
lon n,x;//x用来表示连续数的乘积 
int len=1,str=0,l;//len表示连续数的长度,str 表示连续因子的起始坐标,l表示计算的长度。
cin>>n;
for(lon i=2;i*i<=n;++i)
{
if(n%i==0)
{
a.push_back(i);
}
}
a.push_back(n);

for(int i=0;i<a.size();++i)//下标为i到j,初始的时候长度为1,x为判断乘积是否超过n 
{
l=1;
x=a[i];
for(int j=i+1;j<a.size();++j)////如果i~j符合条件则在j符合条件的基础上扩展一位到j+1,这样可以利用上次循环的计算。
{
x*=a[j];
if((a[j-1]+1)==a[j]&&x<=n)
{
l++;
}
else
{
break;
}
}
if(l>len)
{
len=l;
str=i;
}  
}
cout<<len<<
4000
endl;
cout<<a[str];
for(int i=str+1;i<str+len;++i)
{
cout<<'*'<<a[i];
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: