poj 1426 深搜dfs

来源:互联网 发布:qq九仙坐骑升阶数据 编辑:程序博客网 时间:2024/06/05 03:30
Find The Multiple
Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & %llu
Submit Status

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
这道题唯一的坑点就是任意值都可以,你输出来就行,我输出6的倍数与样例的不同,然后交了下试试然后就对了。要好好学英语了!!!
#include<stdio.h>
int state;///定义是否已找到那个倍数
long long ans;
void dfs(long long a, long long b, int k)
{
if(state)
return ;
if(k==19)
return ;
if(b%a==0 && state==0)//这个加不加state==0都行 我害怕出意外就加上了
{
state=1;
ans=b;
return ;
}
dfs(a,10*b,k+1);
dfs(a,10*b+1,k+1);
}
int main()
{
long long n;
while(scanf("%lld",&n),n)
{
state=0;
dfs(n,1,0);
printf("%lld\n",ans);
}
return 0;
}



0 0