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; }
  • 相关阅读:
    通配符
    Hibernate入门简介
    Java的参数传递是值传递?
    Java线程详解
    java基础总结
    谈谈对Spring IOC的理解
    Oracle SQL语句之常见优化方法总结--不定更新
    JVM 工作原理和流程
    Java中的String为什么是不可变的? -- String源码分析
    Spring AOP 简介
  • 原文地址:https://www.cnblogs.com/372465774y/p/3619759.html
Copyright © 2011-2022 走看看