qq排名优化网站,寮步镇网站建设公司,东莞网站建设三合一,如何引流被动加好友微信题目#xff1a;
给定一个正整数n#xff0c;请编写一个程序来寻找n的一个非零的倍数m#xff0c;这个m应当在十进制表示时每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。 提示#xff1a;本题采用Special Judge#xff0c;你无需输出所有符合条件的m
给定一个正整数n请编写一个程序来寻找n的一个非零的倍数m这个m应当在十进制表示时每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。 提示本题采用Special Judge你无需输出所有符合条件的m你只需要输出任一符合条件的m即可。 Input 输入包含多组数据每组数据仅一行只包含一个正整数n (1 n 200). Output 对于输入的每组n都输出任一符合条件的m。即使有多个符合条件的m你也只需要输出一个即可。 Sample Input 2 6 19 0 Sample Output 10 100100100100100100 111111111111111111
分析与解答
*10*101最终都会满足每位上是零或1
先看dfs由于是深搜我们假设用y存那个01的结果x存位数那么由于答案输出任意符合条件的我们让他位数超过19就不搜了如果y%m0说明y就是答案我们输出y然后flag1让其他的都return了
其实这题可以用bfs因为他也是每个结点分了两个根结点那么我们可以逐层查找 先建立一个队列存那些10组成的数然后把1放到队列里
queuelong longQ;Q.push(x);
只要队列不为空就取队首元素然后把队首pop了
long long y Q.front();Q.pop();
最后发、判断完再放进去两个新的子结点
Q.push(y*10);Q.push(y*101);
代码参考 https://blog.csdn.net/super604zong/article/details/60323894 # include stdio.h
int m, flag;void DFS(int x, long long y)
{if(x 19 || flag 1)//flag是用来保证当找到这个数时可以终止这条路 {return;}if(y%m 0){flag 1;printf(%lld\n,y);return ;} DFS(x1, y*10);DFS(x1, y*101);
}int main(void)
{ while(~scanf(%d,m), m){flag 0;DFS(1, 1);}return 0;
} /*
# include stdio.h
# include queueusing namespace std;
int m;
void BFS(long long x)
{queuelong longQ;Q.push(x);while(Q.size()) {long long y Q.front();Q.pop();if(y%m 0){printf(%lld\n,y);return;}Q.push(y*10);Q.push(y*101);}
}
int main(void)
{while(~scanf(%d,m),m){BFS(1);} return 0;
}
*/