特殊数


Time Limit:   1000MS       Memory Limit:   65535KB
Submissions:   187       Accepted:   75
Description特殊数就是这样一个数:这个数用到1到9这几个组成,每个数字刚好只出现一次。这个数的第一位能被1整除(废话),前两位能被2整除,前三位能被3整除......前N位能被N整除,整个数能被9整除。
Inputn(1<=n <=9并且保证有特殊数存在),表示有几位
Output此特殊数(最小的一个)

Sample Input

1

Sample Output

1

 

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int n,leap;
int vis[12];
void dfs(int index,int num)
{
    if(leap)
        return ;
    if(index>n)
    {
        leap = 1;
        cout<<num<<endl;
        return ;
    }
    for(int i=1;i<=9;i++)
    {
        if(leap)
        return ;
        if(!vis[i]&&(num*10+i)%index==0)
        {
         vis[i] = 1;
         dfs(index+1,num*10+i);
         vis[i] = 0;
        }
    }
}
int main()
{
    scanf("%d",&n);
    memset(vis,0,sizeof(vis));
    leap = 0;
    dfs(1,0);
    return 0;
}

  

原文地址:https://www.cnblogs.com/locojyw/p/3704889.html