`

poj 1426

 
阅读更多

大致题意:

给出一个整数n(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的'0''1'组成。

 

解题思路:

首先暴力枚举肯定是不可能的 1000ms 想不超时都难,而且枚举还要解决大数问题。。

要不是人家把这题放到搜索,怎么也想不到用BFS。。。

 

解题方法: BFS+同余模定理

 

不说废话。

 

首先说说朴素的不剪枝搜索方法:

我以n=6为例

首先十进制数,开头第一个数字(最高位)一定不能为0,即最高位必为1

 

6 ”01十进制倍数k,那么必有k%6 = 0

现在就是要用BFSk

1、先搜索k的最高位,最高位必为1,则此时k=1,但1%6 =1  !=  0

因此k=1不是所求,存储余数 1

2、搜索下一位,下一位可能为0,即 k*10+0,此时k=10,那么k%6=4

可能为1,即 k*10+1,此时k=11,那么k%6=5

由于余数均不为0,即k=10k=11均不是所求

3、继续搜索第三位,此时有四种可能了:

对于k=10,下一位可能为0,即 k*10+0,此时k=100,那么k%6=4

              下一位可能为1,即 k*10+1,此时k=101,那么k%6=5

对于k=11,下一位可能为0,即 k*10+0,此时k=110,那么k%6=2

              下一位可能为1,即 k*10+1,此时k=111,那么k%6=3

由于余数均不为0,即k=100k=101k=110k=111均不是所求

4、继续搜索第四位,此时有八种可能了:

对于k=100,下一位可能为0,即 k*10+0,此时k=1000,那么k%6=4

              下一位可能为1,即 k*10+1,此时k=1001,那么k%6=5

对于k=101,下一位可能为0,即 k*10+0,此时k=1010,那么k%6=2

              下一位可能为1,即 k*10+1,此时k=1011,那么k%6=3

对于k=110,下一位可能为0,即 k*10+0,此时k=1100,那么k%6=2

              下一位可能为1,即 k*10+1,此时k=1101,那么k%6=3

对于k=111,下一位可能为0,即 k*10+0,此时k=1110,那么k%6=0

              下一位可能为1,即 k*10+1,此时k=1111,那么k%6=1

我们发现k=1110时,k%6=0,即1110就是所求的倍数

 如果给的n较大,得到的将是一个大数,这个时候int类型将不能满足需要,我们就开一个__int64的数组供我们使用,具体代码如下:

#include <iostream>
using namespace std;
__int64 q[9999999];
int n;

void BFS()
{
	int rear,front;
	rear=front=0;
	q[rear]=1;//初始化最高位
	rear++;
	__int64 top;
	while (rear>front)
	{
		top=q[front];
		if (top%n==0)
		{
			break;
		}
		top*=10;//像一个队列一样双向循环
		q[rear]=top;
		rear++;
		q[rear]=top+1;
		rear++;
		front++;
	}
	printf("%I64d\n",top);
}

int main()
{
	while (cin>>n&&n!=0)
	{
		BFS();
	}
	return 0;
}


 

 

分享到:
评论

相关推荐

    POJ1426-Find The Multiple【BFS+同余模】

    【标题】"POJ1426-Find The Multiple【BFS+同余模】"是一道来源于北京大学在线编程平台POJ的算法题目,主要涉及到了广度优先搜索(BFS)与同余模运算的知识点。这道题目要求解决的是寻找一个整数的倍数问题,可能...

    北大POJ初级-所有题目AC代码+解题报告

    【标题】"北大POJ初级-所有题目AC代码+解题报告" 涉及的知识点主要集中在编程、算法和在线判题系统方面。北京大学(Peking University, 简称PKU)的POJ(Peking University Online Judge)是一个为计算机科学爱好者...

    POJ算法题目分类

    * 广度优先搜索:广度优先搜索是指解决问题的广度优先搜索算法,如 poj3278、poj1426、poj3126、poj3087、poj3414。 * 简单搜索技巧和剪枝:简单搜索技巧和剪枝是指解决问题的简单搜索技巧和剪枝算法,如 poj2531、...

    poj题目分类

    * 广度优先搜索:例如 poj3278、poj1426、poj3126、poj3087、poj3414。 * 简单搜索技巧和剪枝:例如 poj2531、poj1416、poj2676、poj1129。 5. 动态规划: * 背包问题:例如 poj1837、poj1276。 * 类型 DP:...

    poj训练计划.doc

    - 广度优先搜索:如`poj3278, poj1426`。 - **动态规划** - 背包问题:如`poj1837, poj1276`。 - 简单DP:如`poj3267, poj1836`。 - **数学** - 组合数学:如`POJ3252, poj1850`。 - 数论:如`poj2635, poj...

    POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类

    - **例题**:poj3278, poj1426, poj3126, poj3087, poj3414 - **解释**:复杂动态规划问题可能涉及多维状态转移、记忆化搜索等技巧。 #### 3. 状态压缩动态规划 - **例题**:poj2531, poj1416, poj2676, poj1129 - ...

    acm poj300题分层训练

    poj2488、poj3083等是DFS的练习,poj3278、poj1426等是BFS的题目。 5. **动态规划**和**数学**:poj1837、poj1276是简单的动态规划问题,poj3267、poj1836等进一步强化了DP,poj3252、poj1850等则涉及组合数学,poj...

    经典 的POJ 分类

    - POJ 3278、POJ 1426:特殊搜索策略的应用。 - POJ 3126、POJ 3087:复杂搜索策略解决实际问题。 ### 动态规划 #### 一维动态规划 - **题目示例**: - POJ 1837、POJ 1276:基础动态规划问题。 #### 多维动态...

    acm新手刷题攻略之poj

    ### ACM新手刷题攻略之POJ ... - 推荐题目:[poj3278](https://vjudge.net/problem/POJ-3278)、[poj1426](https://vjudge.net/problem/POJ-1426)、[poj3126](https://vjudge.net/problem/POJ-3126)、[poj3087]...

    ACM-POJ 算法训练指南

    2. **组合数学**:如排列组合计算(poj3278, poj1426, poj3126, poj3087.poj3414)。 3. **矩阵运算**:矩阵乘法和矩阵快速幂(poj2531, poj1416, poj2676, 1129)。 ### 五、状态压缩 1. **状态压缩动态规划**:...

    POJ 分类题目

    - poj1426 - poj3126 - poj2251 - poj2243 - poj3352 - poj1111 - poj3051 - poj1129 - poj2907 - **应用场景**:适用于搜索、连通性检测等问题。 **2. 最短路径算法** - **定义**:包括 Dijkstra 算法、...

    POJ题目分类

    - **示例题目**: poj3278, poj1426, poj3126, poj3087, poj3414 #### 4. 字符串搜索 - **内容**: 包括后缀树、AC自动机等字符串搜索算法。 - **示例题目**: poj2531, poj1416, poj2676, poj1129 ### 五、数学 ##...

    ACM常用算法及其相应的练习题.docx

    * 广度优先搜索:poj3278, poj1426, poj3126, poj3087, poj3414 * 简单搜索技巧和剪枝:poj2531, poj1416, poj2676, poj1129 五、动态规划 * 背包问题:poj1837, poj1276 * 类似表的简单 DP:poj3267, poj1836, ...

    ACM 详解算法目录

    例如,POJ2488和POJ3083是深度优先搜索的经典例题,而POJ3278和POJ1426则是广度优先搜索的代表题。 动态规划部分涵盖了背包问题和简单DP两方面。例如,POJ1837和POJ1276是背包问题的典型例题,而POJ3267和POJ1836则...

    ACM常用算法及其相应的练习题 (2).docx

    (2) 广度优先搜索:poj3278, poj1426, poj3126, poj3087, poj3414 (3) 简单搜索技巧和剪枝:poj2531, poj1416, poj2676, 1129 五、动态规划 本部分涵盖了动态规划,包括背包问题、简单DP和其他DP问题。 (1) 背包...

    ACM算法总结大全——超有用!

    2. 广度优先搜索(BFS):如poj3278、poj1426等。 3. 搜索技巧与剪枝:提高搜索效率,如poj2531、poj1416等。 五、动态规划 1. 背包问题:如poj1837、poj1276。 2. 简单动态规划:如表格形式的DP问题,如poj3267、...

    北大acm试题

    poj2488、poj3083和poj3009是DFS的例子,而poj3278、poj1426和poj3126则侧重于BFS。poj2531、poj1416和poj2676等题目则包含搜索技巧和剪枝的实践。 五、动态规划 动态规划是一种高效解决问题的方法,常用于背包问题...

    ACM 题型

    - 示例题目:poj3278, poj1426, poj3126, poj3087, poj3414 3. **矩阵优化** - 示例题目:poj2531, poj1416, poj2676, poj1129 #### 数学 1. **组合数学** - **组合数计算** - **容斥原理** - **递推关系** ...

    ACM 经验 笔记 很有用的经验指导

    - **广度优先搜索(BFS)**:poj3278、poj1426 等。 - **搜索技巧和剪枝**:避免无效搜索,如 poj2531、poj1416。 5. **动态规划**: - **背包问题**:如 poj1837、poj1276。 - **表格形式的简单DP**:如 poj...

Global site tag (gtag.js) - Google Analytics