POJ 1426

来源:互联网 发布:移动硬盘与mac不兼容 编辑:程序博客网 时间:2024/05/29 09:54

bps加上了同余剪枝的优化

#include<iostream>#include<queue>using namespace std;struct node{       char num[101];       int len, remain;};int visited[200];queue<node> q;int main(){    int n;    node t;    while(scanf("%d", &n) && n != 0)    {                      int i;                      for (i = 0; i < n; i++) visited[i] = 0;                      while (!q.empty()) q.pop();                      t.num[0] = '1';                      t.remain = 1 % n;                      t.len = 1;                      q.push(t);                      while(1)                      {                              t = q.front();                              q.pop();                              if (t.remain % n == 0) break;                              t.num[t.len] = '0';                              t.len++;                              t.remain = (t.remain * 10) % n;                              if (visited[t.remain] == 0)                              {                                                    q.push(t);                                                    visited[t.remain] = 1;                              }                              t.num[t.len - 1] = '1';                              t.remain = (t.remain + 1) % n;                              if (visited[t.remain] == 0)                              {                                                    q.push(t);                                                    visited[t.remain] = 1;                              }                              }                      t.num[t.len] = 0;                      printf("%s\n", t.num);    }//    system("pause");    return 0;}