首页 > 其他 > 详细

poj 1426 bfs

时间:2019-02-04 00:07:26      阅读:223      评论:0      收藏:0      [点我收藏+]

// 题意 求n的倍数 且只含有01 的数
// 同余定理 + bfs

//#include<bits/stdc++.h>

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;

const int N = 1e6+4;
int mod[N];
//  题意 求n的倍数  且只含有01  的数
//  同余定理 + bfs

int main(){


    int n;

    while(cin>>n &&n){

       mod[1] = 1%n;
       int las = 1;
       int i;
       // 就是把 通过i/2得到的上一位,然后分别+0,+1位  用i二进制表示n
       for(i=2;mod[i-1]!=0;i++)  //利用同余模定理,从前一步的余数mod[i/2]得到下一步的余数mod[i]
            mod[i]=(mod[i/2]*10+i%2)%n;
                     //mod[i/2]*10+i%2模拟了BFS的双入口搜索
                     //当i为偶数时,+0,即取当前位数字为0  。为奇数时,则+1,即取当前位数字为1
       las = i-1;

       // cout<<las<<endl;
       int ans[222];int len =0;
       while(las){
         ans[len++] = las%2;
         las/=2;
       }
       for(int i=len-1;i>=0;--i)
        printf("%d",ans[i]);
       cout<<endl;
    }
    return 0;
}

 

poj 1426 bfs

原文:https://www.cnblogs.com/wjhstudy/p/10351270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!