搜索练习13/poj/problem1426 Find The Multiple/bfs
2017-05-01 16:23
344 查看
http://poj.org/problem?id=1426
Find The Multiple
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
Sample Output
题意:给出一个数n,然后求得一个数字k,数字满足:能被n整除,每一位只有0,1。这样的数字k会有很多个,然以输出一个就可以。
思路:n的最大值为200,用dfs从数字k的个位开始往高位搜索,每一位只有0或1。找到能被n整除的时候输出就可以了。最大是19位,long long 刚好。
AC代码:
#include<cstdio>
#define LL long long
LL n;
int flag;
void dfs(LL num)
{
if(num%n==0)
{
flag=1;
printf("%lld\n",num);
return ;
}
if(num>=1e18)
return ;
dfs(num*10);
if(flag)
return ;
dfs(num*10+1);
return ;
}
int main()
{
while(~scanf("%lld",&n))
{
if(n==0)
break;
flag=0;
dfs(1);
}
}
Find The Multiple
Time Limit: 1000MS | Memory Limit: 10000K | |||
Total Submissions: 30986 | Accepted: 12886 | Special Judge |
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
2 6 19 0
Sample Output
10 100100100100100100 111111111111111111
题意:给出一个数n,然后求得一个数字k,数字满足:能被n整除,每一位只有0,1。这样的数字k会有很多个,然以输出一个就可以。
思路:n的最大值为200,用dfs从数字k的个位开始往高位搜索,每一位只有0或1。找到能被n整除的时候输出就可以了。最大是19位,long long 刚好。
AC代码:
#include<cstdio>
#define LL long long
LL n;
int flag;
void dfs(LL num)
{
if(num%n==0)
{
flag=1;
printf("%lld\n",num);
return ;
}
if(num>=1e18)
return ;
dfs(num*10);
if(flag)
return ;
dfs(num*10+1);
return ;
}
int main()
{
while(~scanf("%lld",&n))
{
if(n==0)
break;
flag=0;
dfs(1);
}
}
相关文章推荐
- poj 1426 Find The Multiple (bfs 搜索)
- POJ 1426 Find The Multiple(简单搜索bfs)
- poj 1426 Find The Multiple(搜索BFS的思想+ 同余模定理+二叉树+01哈夫曼编码)
- POJ1426-Find The Multiple-深度优先搜索BFS
- 【原】 POJ 1426 Find The Multiple BFS搜索 解题报告
- POJ 1426 Find The Multiple (bfs搜索)
- poj 1426 Find The Multiple (bfs 搜索)
- POJ - 1426 Find The Multiple(15.10.10 搜索专题)bfs
- POJ 1426 Find The Multiple (BFS基础)
- poj -- 1426 Find The Multiple (搜索)
- POJ 1426 Find The Multiple(kuangbin带你飞 专题一:简单搜索)
- POJ1426——BFS——Find The Multiple
- POJ 1426 Find The Multiple(BFS 同余模定理)
- POJ1426-Find The Multiple (BFS 余数)
- 【搜索】【poj 1426】Find The Multiple
- POJ-1426(Find The Multiple)--简单搜索
- POJ Find The Multiple 简单BFS
- POJ训练计划1426_Find The Multiple(BFS)
- poj 1426 Find The Multiple( bfs )
- poj1426 Find The Multiple 简单搜索