您的位置:首页 > 其它

L1-6. 连续因子 PAT团体程序设计天梯赛

2016-05-10 12:42 435 查看
题目 https://www.patest.cn/contests/gplt/L1-6
#include<iostream> #include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
long long a[1000000],length=0;
long long n;
long long bb,tt=1,pp[100000],ppp[100000];
long long maxn=1;

int dfs(long long sum,long long m)
{
if(sum>=n){
return -1;
}

for(long long i=m+1;i<length;i++){
if(a[i-1]==a[i]-1){
if(sum*a[i]<=n){
tt++;
}
//        cout<<tt<<' '<<maxn<<' '<<a[i]<<' '<<m<<endl;
if(tt>maxn){
maxn=tt;
long long t=tt;
long long k=i;
while(t>0){
pp[t]=a[k];
t--;
k--;
}
}
}
else{
tt=1;
}
int flag=dfs(a[i]*sum,i);
if(flag==-1){
tt=1;
break;
}
}
return -1;
}

int main()
{
scanf("%lld",&n);
long long j=0;
for(long long i=2;i<=sqrt(n)+1;i++){
if(n%i==0){
a[j]=i;
j++;
}
}
length=j;

if(length==0){
printf("1\n%lld",n);
return 0;
}

for(long long i=0;i<length;i++){
tt=1;
//      cout<<a[i]<<' '<<i<<endl;
dfs(a[i],i);
}
printf("%lld\n",maxn);
if(maxn==1){
pp[1]=a[0];
}
printf("%lld",pp[1]);
for(long long i=2;i<=maxn;i++){
printf("*%lld",pp[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: