F - 数位乘积

传送门:https://cn.vjudge.net/contest/312579#problem/F

这道题我一直WA 下来问了一下别人结果发现个位数我们就直接输出N就行了 不需要输出N*10+N
我就是一个菜鸡 而且写的递归函数的终止条件也不是很好 唉-------

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f

using namespace std;



int a[1000000],b[1000000];
int n,cnt=0;
bool f=0;
void dfs(int n,int x,int sum)
{
    if(f)
        return ;
    if(n==1)
    {
        f=1;
        cnt=x;
        for(int i=0; i=2; i--)
    {
        if(n%i==0)
        {
            a[x]=i;
            printf("a[%d]=%d\n",x,a[x]);
            dfs(n/i,x+1,sum*i);
        }
    }
}
int main()
{
    scanf("%d",&n);
    if(n<10)
        printf("%d\n",n);
    else
    {
        dfs(n,0,1);
        if(!f)
            printf("-1\n");
        sort(b,b+cnt);
        for(int i=0; i

你可能感兴趣的:(随笔)