POJ 1426 Find The Multiple

来源:互联网 发布:eval js 出错 编辑:程序博客网 时间:2024/06/06 21:02

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

26190

Sample Output

10100100100100100100111111111111111111
题目大意:给出一个大于等于1且小于等于200的整数,求它的一个只有0和1组成的倍数。
解题思路:本来以为很麻烦,看POJ的discuss,说的是数据范围不超过unsignde long long,可以用DFS。。。

代码如下:

#include <cstdio>#include <cstring>#include <algorithm>typedef unsigned long long ull;typedef long long ll;int n;bool flag;void dfs(ull num,int depth){    if(depth == 19 || flag)        return ;    if(num % n == 0){        flag = true;        printf("%I64u\n",num);        return ;    }    else{        dfs(num * 10,depth + 1);        dfs(num * 10 + 1,depth + 1);    }    return ;}int main(){    while(scanf("%d",&n) != EOF && n){        flag = false;        dfs(1,0);    }    return 0;}


0 0
原创粉丝点击