bfs双入口
首先 x = 1
然后考虑 10 和 11
接着 100 101 110 111
然后根据同余模定理 (x*10)%n=(x%n*10%n)%n 那么我们只需要执行到某一步的余数为0即可
每次保存余数 就可以根据 余数 进行计算 (当前的余数*10+1||0)%n就是下一步的余数 直到找到0为止
// // main.c // example // // Created by Adam on 15/2/2. // Copyright (c) 2015年 Adam. All rights reserved. // #include <iostream> #include "stdio.h" #include "stdlib.h" #include "string.h" #include "algorithm" #include <queue> using namespace std; int main() { int n,pos,i; int mod[1000000]; int ss[205]; while(scanf("%d",&n)!=EOF&&n) { mod[1]=1; for(i=2;mod[i-1];i++) mod[i]=(mod[i/2]*10+i%2)%n; i--; pos=0; while(i) { ss[pos++]=i%2; i/=2; } for(int i=pos-1;i>0;i--) printf("%d",ss[i]); printf("%d\n",ss[0]); } return 0; }
poj 1426(同余模&&bfs)
最新推荐文章于 2021-08-03 17:41:59 发布