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;
}
#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;
}
相关文章推荐
- L1-006. 连续因子(枚举因子)
- L1-006. 连续因子
- L1-006. 连续因子
- 团体程序设计天梯赛-练习集-L1-006. 连续因子
- 团体程序设计天梯赛-练习集 L1-006. 连续因子 JAVA
- 连续因子-阶乘(L1-006)
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006.连续因子
- PAT-CCCC练习:L1-006.连续因子
- L1-006. 连续因子
- PAT L1-006. 连续因子
- PAT L1——006. 连续因子
- L1-006. 连续因子
- PAT L1-006 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- (PAT)L1-006 . 连续因子
- PAT L1-006 连续因子