POJ-1426 0|1からなる10進数整除問題

2925 ワード

///  :    n,       ans    ans        0   1;
///                       ,    dfs bfs   ;
///bfs c++ TLE, g++   4       ;                ;


///     bfs                TLE ;      ;
/*#include
#include
using namespace std;

typedef long long LL;
LL n;

void bfs()
{
    queueQ;
    Q.push(1);
    while(!Q.empty())
    {
        LL now=Q.front();
        Q.pop();
        if(now%n==0)
        {printf("%lld
",now);return;} Q.push(now*10); Q.push(now*10+1); } return ; } int main () { while(scanf("%lld",&n)) { if(n==0) break; bfs(); } } */
///141ms /// 19 OK ; #include using namespace std; typedef unsigned long long LL;/// long long ; int n; bool flag; void dfs(LL k1,LL k2) { if(flag) return ;/// dfs ; if(k1%n==0){ printf("%I64u
"
,k1);flag=true;return ;} if(k2==19) return ;/// 19; 。 dfs(k1*10,k2+1); dfs(k1*10+1,k2+1); } int main () { while(scanf("%d",&n)&&n) { flag=false; dfs(1,0); } return 0; }