1426POJ

给你一个n,求出任意一个倍数m,全部由0或者1组成

http://blog.csdn.net/lyy289065406/article/details/6647917

上面的blog写得非常的详细。

#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<queue>


#define ll __int64
#define lll unsigned long long//这个题可以用无符号进制数表示出来,算是一个小漏洞。。实际要用同余定理之类的。。
#define MAX 10000009
#define MAXN 2009
#define eps 1e-8
#define INF 0xfffffff
#define mod 1000000007
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1


using namespace std;

int flag;

void dfs(lll x,int n,int deep)
{
    if(flag)
    {
        return ;
    }
    if(x%n==0)
    {
        flag = 1;
        printf("%llu\n",x);
        return ;
    }
    if(deep==19)
    {
        return ;
    }
    dfs(x*10,n,deep + 1);
    dfs(x*10 + 1,n,deep + 1);
}
int main()
{
    int n;
    while(~scanf("%d",&n)&&n)
    {
        flag = 0;
        dfs(1,n,0);
    }

    return 0;
}

你可能感兴趣的:(1426POJ)