思路:当时糊想了一个同余的规律,没想到居然可以。就是细节有点多,主要当时有组数据,198一直没出,改好就过了。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <cstdlib>
#include <queue>
using namespace std;
const int MAXN = 10005;
const int inf = 0x3f3f3f3f;
typedef long long LL;
bool vis[MAXN];
queue <pair<int, string> >q;
int main()
{
int n;
string s;
while(scanf("%d", &n), n)
{
while(!q.empty())
q.pop();
vis[1]=true;
s="1";
q.push(make_pair(1,s));
memset(vis, false,sizeof(vis));
while(!q.empty())
{
pair<LL, string> u=q.front();
q.pop();
if(u.first%n==0)
{
cout<<u.second<<endl;
break;
}
if(!vis[u.first*10%n])
{
vis[u.first*10%n]=true;
q.push(make_pair((u.first*10%n), u.second+"0"));
}
if(!vis[(u.first*10+1)%n])
{
vis[(u.first*10+1)%n]=true;
q.push(make_pair(((u.first*10+1)%n), u.second+"1"));
}
}
}
return 0;
}