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

来源:互联网 发布:添加不了网络客户端 编辑:程序博客网 时间:2024/05/17 07:55
题目 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;}

0 0
原创粉丝点击