Find The Multiple——广搜+打表

Find The Multiple——广搜+打表,第1张

Find The Multiple——广搜+打表 标题 Find The Multiple

分析

因为要求十进制数字中只能由0 1,这个数字从1 10 11 110 111…可看出来,均可从前一个数字*10 or *10+1得出;
那么就通过广度搜索遍历得出数字,然后再判断是否符合整除条件即可。
为了避免超时,采用打表方式进行先行计算。
坑:
最开始使用c++的编译环境,

代码
#include
#include
using namespace std;
int n;
long long a[205];
void bfs() {
	queue Q;
	for(int i=1; i<=201; i++) {
		Q.push(1);
		while(!Q.empty()) {
			long long b=Q.front();
			if(b%i==0) {
				a[i]=b;
				break;
			}
			Q.pop();
			Q.push(b*10);//+0
			Q.push(b*10+1);//+1
		}
	}
}
int main() {
	bfs();
	while(cin>>n&&n) {
		cout<					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存