POJ 1426Find The Multiple

http://poj.org/problem?id=1426


以上是题目链接


题意大概为   我给你一个N,你现在只有由0和1组成的数字,求出第一个可以整除N的数来。


简单深搜,唯一坑点在注意 unsigned long long 的最大存储限度。所以我们需要加一个 整数去限制它,防止爆掉。

以下是源代码

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <cmath>
#define P 317000011
#include <iostream>
#define LL __int64
#include <stdlib.h>
using namespace std;
int flag=0;
void dfs(unsigned __int64 a,int n,int k)
{
    if(flag)
        return ;
    if(a%n==0)
    {
        flag=1;
        cout<<a<<endl;
        return ;


    }


    if(k>=19)  //大家可以自己输出一下,k>19之后会爆掉的
    {
        return ;
    }
    dfs(a*10,n,k+1);


    dfs(a*10+1,n,k+1);
}
int main()
{
    int n;
    while(cin>>n&&n)
    {
        flag=0;
       dfs(1,n,0);
    }
    return 0;
}

你可能感兴趣的:(poj)