简单的数字拆分
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <map>
#include <string>
#include <iostream>
#include <set>
using namespace std;
long long num[1000];
long long road[1000];
int cnt=0;
void dfs(int now,int n )
{
int tep=0;
long long ans=1;
for(long long i=now;;i++)
{
ans*=i;
road[tep]=i;
if(n%ans==0&&n>=ans)
tep++;
else
break;
}
if(tep>cnt)
{
for(int i=0;i<tep;i++)
num[i]=road[i];
cnt=tep;
}
}
int main()
{
long long t,n,m,i,j,k,l,kk,ll;
scanf("%lld",&n);
for(i=2;i*i<=n;i++)
{
dfs(i,n);
}
if(cnt==0)
{
cnt=1;
num[0]=n;
}
printf("%lld\n",cnt);
for(i=0;i<cnt;i++)
{
printf("%lld",num[i]);
if(i!=cnt-1)
printf("*");
}
return 0;
}