BFS_2
来源:互联网 发布:淘宝的帮助中心在哪里 编辑:程序博客网 时间:2024/06/10 23:23
Description
Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal digits.
Input
The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.
Output
For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.
Sample Input
26190
Sample Output
10100100100100100100111111111111111111
注意虽然题目说答案可能有100位数,但是 long long 也可以过的。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;int n;void bfs(){ queue<long long> q; while(!q.empty()) q.pop(); q.push(1); while(1) { long long tmp=q.front(); if(tmp%n==0) { cout<<tmp<<'\n'; return; } q.pop(); q.push(tmp*10); q.push(tmp*10+1); }}int main(){ while(scanf("%d",&n),n) bfs(); return 0;}
0 0