首页 > 学院 > 开发设计 > 正文

51nod 1109 01组成的N的倍数 【dfs+剪枝+vector】

2019-11-08 02:10:06
字体:
来源:转载
供稿:网友

1109 01组成的N的倍数基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。例如:N = 4,M = 100。Input
输入1个数N。(1 <= N <= 10^6)Output
输出符合条件的最小的M。Input示例
4Output示例
100

代码:

#include<cstdio>#include<vector>#include<queue>#include<cstring>#include<algorithm>using namespace std;bool yu[1000100];struct node{    vector<char> ch;    int shu;}now,qian;int main(){    int n;    scanf("%d",&n);    if(n==1)        PRintf("1/n");    else    {        queue<node> que;        now.shu=1;        now.ch.push_back('1');        que.push(now);        int a,b;yu[1]=true;        bool fafe=false;        while (true)        {            now=que.front();            que.pop();            a=now.shu*10;            for (int i=0;i<2;i++)            {                b=(a+i)%n;                if (b==0)                {                    for (int i=0;i<now.ch.size();i++)                        printf("%c",now.ch[i]);                    printf("%d/n",i);                    fafe=true;                    break;                }                if (yu[b]) continue;                yu[b]=true;                qian.ch=now.ch;                qian.ch.push_back(i+48);                qian.shu=b;                que.push(qian);            }            if (fafe) break;        }    }    return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表