Find The Multiple
给定一个正整数n,编写一个程序来找出n的非零倍数m,其十进制表示只包含数字0和1。您可以假设 n 不大于 200,并且有一个包含不超过 100 个小数位的相应 m。
输入
输入文件可能包含多个测试用例。每行包含 n 的值 (1 <= n <= 200)。包含零的行终止输入。
输出
对于输入中的每个值 n,打印一行包含相应的 m 值。m 的十进制表示形式不得包含超过 100 位数字。如果给定值 n 有多个解,则其中任何一个都是可以接受的。
Sample
Inputcopy | Outputcopy |
---|---|
2 6 19 0 | 10 100100100100100100 111111111111111111 |
#include<iostream>
#include<cmath>
#include <cstring>
#include <stdlib.h>
using namespace std;
long long ans,sl,n;
void dfs(long long k,long long p)
{
if(sl==0||k==19)
return ;
//cout<<p<<endl;
if(p%n==0)
{
cout<<p<<endl;
sl=0;
return ;
}
dfs(k+1,p*10);
dfs(k+1,p*10+1);
}
int main(){
while(cin>>n&&n!=0)
{
ans=0;
sl=1;
dfs(0,1);
}
}