这题的题意说的是找到一个m,m的值就是n的倍数,并且m仅由1和0组成。
这题的话,我们用广搜,搜索还是很快的,我们让1入队列,每次向下分支的时候,我们就让这个队列头的数乘10,或者乘10+1就行了,因为我们最开始只让1入了队列。 这题就相当于是在寻找仅由1、0组成的数,且是n的倍数的数,理解题意就好写多了。#include#include using namespace std;int n;long long m;queue q;void bfs(){ q.push(1); while (!q.empty()) { long long front = q.front(); q.pop(); if (front%n==0) { m = front; return; } q.push(front*10); q.push(front * 10 + 1); }}int main(){ ios::sync_with_stdio(false); while (cin>>n&&n) { while (!q.empty()) q.pop(); m = 0; bfs(); cout << m << endl; } return 0;}