当前位置: 代码迷 >> 综合 >> poj-1426-bfs取余
  详细解决方案

poj-1426-bfs取余

热度:0   发布时间:2023-12-19 11:29:58.0

题意:

给一个数n,让你找出一个只有1,0,组成的十进制数,要求是找到的数可以被n整除。

做法:

假如n=6;

1余n=1;

10余n=1*10%6=4;

11余n=(1*10+1)%6=5;

100余n=4*10%6=4;

101余n=(4*10+1)%6=5;

110余n=5*10%6=2;

111余n=(5*10+1)%6=3;

可以推知10。。。。01余n=(10。。。。0余n*10+1)余n;

#include<iostream>
#include<stdio.h>
#include<queue>
using namespace std;
void bfs(int n)
{queue<long long>q;q.push(1);while(!q.empty()){int i;long long x;x=q.front();q.pop();if(x%n==0){printf("%lld\n",x);return ;}q.push(x*10);q.push(x*10+1);}
}
int main()
{int n;while(scanf("%d",&n)&&n){bfs(n);}return 0;
}