Introduction
在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,你也只需要输出一个即可。
(已知long long范围内存在表示数据中所有的m
Sample
input
2 6 19 0
output
10 100100100100100100 111111111111111111
Solution
import java.util.LinkedList; import java.util.Scanner; public class Main { static int k; static boolean flag; public static void main(String[] args) { Scanner s=new Scanner(System.in); while (true){ k=s.nextInt(); if(k==0)break; flag=false; dfs(1); } } static void dfs(long n){ if(String.valueOf(n).length()>19||flag){ return; } if(n%k==0){ flag=true; System.out.println(n); return; } dfs(n*10); dfs(n*10+1); } }
Experience
!!!为什么用dfs。开始觉得bfs肯定是比dfs要好的,但是有的数字的结果长度达到十几位,导致queue里面的变量个数达到2的十几次方。于是内存不够。
dfs能够用时间换空间,在一定长度的数字下,肯定能找到结果的。