zoukankan      html  css  js  c++  java
  • poj 1426 Find The Multiple

    //给你一个整数 1<=n<=200 求它的非零倍数 这个倍数仅有0和1
    // 可以看成从 1 100 1000 10^3 10^4 ... 10^n
    // 选些数和是n的倍数 肯定是存在的
    // 广搜 若余数重复就不用加入队列 这样最多就 200个方向
    #include <iostream> #include <string> #include <queue> #include <cmath> #include <map> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; #define LL __int64 //#define LL long long #define N 1010 struct node { int num; int fa; int lf; }No[N]; int h[210]; void output(int id) { if(id) { output(No[id].fa); printf("%d",No[id].num); } } int main() { int n; int f,t; int id; queue<int> Q; while(scanf("%d",&n),n) { if(n==1) {printf("1 ");continue;} id=1; memset(h,0,sizeof(h)); Q.push(1); h[1]=1; No[id].num=1; No[id].fa=0; No[id].lf=1;id++; while(!Q.empty()) { f=Q.front(); Q.pop(); t=No[f].lf*10; int lft=t%n; if(!h[lft]){ h[lft]=1; if(lft==0){ No[id].fa=f; No[id].num=0; //No[id].lf=0; //id++; output(id); break; }else { No[id].fa=f; No[id].num=0; No[id].lf=lft; Q.push(id); id++; } } t=No[f].lf*10+1; lft=t%n; if(h[lft]) continue; h[lft]=1; if(lft==0){ No[id].fa=f; No[id].num=1; output(id); break; }else { No[id].fa=f; No[id].num=1; No[id].lf=lft; Q.push(id); id++; } } printf(" "); while(!Q.empty()) Q.pop(); } return 0; }
  • 相关阅读:
    Linux学习-汇总
    前端学习-汇总
    人生苦短,我用python
    python_面试题_DB相关问题
    企业应用学习-git学习
    python基础-并发编程之I/O模型基础
    python_面试题_HTTP基础相关问题
    python_面试题_TCP的三次握手与四次挥手问题
    好的RESTful API的设计原则
    CSP-S2021 游记
  • 原文地址:https://www.cnblogs.com/372465774y/p/3619759.html
Copyright © 2011-2022 走看看