1426找数字

原创 2018年04月16日 21:58:11
//Memory Time
//2236K  32MS 

#include<iostream>
using namespace std;

int mod[524286];  //保存每次mod n的余数
                  //由于198的余数序列是最长的
                  //经过反复二分验证,436905是能存储198余数序列的最少空间
                  //但POJ肯定又越界测试了...524286是AC的最低下限,不然铁定RE

int main(int i)
{
	int n;
	while(cin>>n)
	{
		if(!n)
			break;

		mod[1]=1%n;  //初始化,n倍数的最高位必是1

		for(i=2;mod[i-1]!=0;i++)  //利用同余模定理,从前一步的余数mod[i/2]得到下一步的余数mod[i]
			mod[i]=(mod[i/2]*10+i%2)%n;
		             //mod[i/2]*10+i%2模拟了BFS的双入口搜索
		             //当i为偶数时,+0,即取当前位数字为0  。为奇数时,则+1,即取当前位数字为1

		i--;
		int pm=0;
		while(i)
		{
			mod[pm++]=i%2;   //把*10操作转化为%2操作,逆向求倍数的每一位数字
			i/=2;
		}
		while(pm)
			cout<<mod[--pm];  //倒序输出
		cout<<endl;
	}
	return 0;
}

还有一种自己想得到的BFS,找到搜索方向就是*10和*10+1。(在超时的边缘试探(用g++可以通过))

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n;
queue<long long> p;
long long bfs() 
{

	while (!p.empty())
		p.pop();
	p.push(1);
	while (!p.empty())
	{
		long long t = p.front();
		p.pop();
		if (t%n == 0)
			return t;
		p.push(t * 10);
		p.push(t * 10 + 1);
	}
}

int main() 
{

	while (~scanf("%d", &n) && n)
	{
		printf("%lld\n", bfs());
	}
	return 0;
}

POJ 1426 好玩的打表题(bfs+大整数取模)

Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22703   Accepte...
  • qq_24489717
  • qq_24489717
  • 2015-11-07 00:49:15
  • 979

HDU1426 Sudoku Killer(DFS 选对搜索对象很重要)

题意:给一个没有完成的数独,输出完整结果。数据保证有且只有一个解。 思路:题意明确,思路还是比较好想的,找到每个空的位置,把1到9尝试一遍只要不冲突就填上再往下搜索一直找到解就行了。 卡在...
  • hcx11333
  • hcx11333
  • 2017-01-22 23:49:06
  • 640

【BZOJ1426】收集邮票 概率DP 论文题 推公式题

题解: 并没有什么卵用,首先有一个神思路,然后神推公式。下面这篇博客写得很详尽、、 =a800”>http://blog.csdn.net/pygbingshen/article/details/...
  • Vmurder
  • Vmurder
  • 2015-06-12 10:27:17
  • 1448

poj1426 - Find The Multiple

想看更多的解题报告: http://blog.csdn.net/wangjian8006/article/details/7870410                               ...
  • wangjian8006
  • wangjian8006
  • 2012-04-14 14:09:22
  • 2836

解决ora-01426:数字溢出的办法

  • 2015年12月07日 09:44
  • 1KB
  • 下载

[BZOJ 1426]收集邮票:期望DP

点击这里查看原题挺神奇的一道题,我自己没完全看懂题解,还是放别人的链接吧。这里/* User:Small Language:C++ Problem No.:1426 */ #include #defi...
  • SmallSXJ
  • SmallSXJ
  • 2017-04-19 14:18:14
  • 199

POJ1426 建议打表做该题/用数组模拟队列(比STL队列速度要快)

0) 题意:          求一个数的(任意一个)倍数,并且这个倍数仅由0和1组成。 分析:        深搜所有0、1组成的数,直到出现所求数的倍数。但0、1组成的数可能很大。      ...
  • a272846945
  • a272846945
  • 2016-05-18 21:21:35
  • 345

POJ 1426 Find The Multiple

本以为这题会很难,又是大数又是搜索的,结果仔细一研究,就是一水题…… 大致题意: 给出一个整数n,(1 从小往大搜超不出unsigned long long型的范围,每个数都有答案,放心的DF...
  • lin375691011
  • lin375691011
  • 2013-08-20 10:05:11
  • 5304

hdu1426一道很有意思的题目:数独

Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视。 据说,在2008北京奥运会上,会将数独列为一个单独的...
  • xingyeyongheng
  • xingyeyongheng
  • 2012-12-06 18:22:00
  • 3297

【poj 1426】Find The Multiple 题意&题解&代码(C++)

poj
  • DERITt
  • DERITt
  • 2016-03-22 21:58:46
  • 310
收藏助手
不良信息举报
您举报文章:1426找数字
举报原因:
原因补充:

(最多只允许输入30个字)