没什么好说的 从1开始进行广搜,因为只能包涵0和1,所以下一次需要搜索的值为next=now*10 和 next=now*10+1,每次判断一下就可以了,但是我一直不太明白我的代码为什么C++提交会错,G++则正确。
#include<cstdio> #include<stdio.h> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<queue> #define INF 0x3f3f3f3f #define MAX 1005 using namespace std; int n; void BFS() { queue<long long>Q; long long num; Q.push(1); while(!Q.empty()) { num=Q.front(); Q.pop(); if(num%n==0) { printf("%lld ",num); return; } Q.push(num*10); Q.push(num*10+1); } } int main() { while(scanf("%d",&n),n) { BFS(); } return 0; }