descrip
在2100年科学家发现了平行宇宙,但是新发现的Earth2的世界中所有数字都是由0和1组成的十进制数,如果从我们的世界穿越到Earth2,数字将发生一些变化,例如:一个正整数n,将被转化为n的一个非零的倍数m,这个m应当符合Earth2的数字规则。你可以假定n不大于200且m不多于100位。
提示:本题采用Special Judge,你无需输出所有符合条件的m,你只需要输出任一符合条件的m即可。
Input
输入包含多组数据,每组数据仅一行,只包含一个正整数n,n==0时输入结束 (1 <= n <= 200).
Output
对于输入的每组n,都输出任一符合条件的m。即使有多个符合条件的m,你也只需要输出一个即可
AC Code DFS
#include<iostream>
#include<string.h>
using namespace std;
int n;
int solve = 0;
void dfs(unsigned long long num,int k){
if(solve)return;
if(num%n==0){
cout<<num<<endl;
solve = 1;
return;
}
if(k>=19)return;
dfs(num*10,k+1);
dfs(num*10+1,k+1);
}
int main(){
while(scanf("%d",&n)&&n){
solve = 0;
dfs(1,1);
}
return 0;
}
BFS
bfs超时了
#include<iostream>
#include<queue>
using namespace std;
int n;
void bfs(int beg){
queue<unsigned long long>qu;
qu.push(beg);
unsigned long long tmp;
while(qu.size()){
tmp = qu.front();
qu.pop();
if(tmp%n==0)
{
while(qu.size())qu.pop();
cout<<tmp<<endl;
break;
}else{
qu.push(tmp*10);
qu.push(tmp*10+1);
}
}
}
int main(){
while(scanf("%d",&n)&&n){
bfs(1);
}
return 0;
}