POJ 1780 Code (十进制格雷码&欧拉回路)

不到200块!手把手教你用ZYNQ7010和AD9363攒一台自己的开源SDR硬件(附BOM清单) 本文详细介绍了如何用不到200元的预算,基于ZYNQ7010 FPGA和AD9363射频芯片打造一台功能完备的开源SDR硬件平台。从核心组件选型、PCB设计到焊接调试,提供全流程实战指南,特别适合预算有限的硬件爱好者和创客群体探索无线通信世界。 阅读详情
Code

Time Limit:  1000MS
Memory Limit: 65536K

Description

KEY Inc., the leading company in security hardware, has developed a new kind of safe. To unlock it, you don't need a key but you are required to enter the correct n-digit code on a keypad (as if this were something new!). There are several models available, from toy safes for children (with a 2-digit code) to the military version (with a 6-digit code). 

The safe will open as soon as the last digit of the correct code is entered. There is no "enter" key. When you enter more than n digits, only the last n digits are significant. For example (in the 4-digit version), if the correct code is 4567, and you plan to enter the digit sequence 1234567890, the door will open as soon as you press the 7 key. 

The software to create this effect is rather simple. In the n-digit version the safe is always in one of 10 n-1 internal states. The current state of the safe simply represents the last n-1 digits that have been entered. One of these states (in the example above, state 456) is marked as the unlocked state. If the safe is in the unlocked state and then the right key (in the example above, 7) is pressed, the door opens. Otherwise the safe shifts to the corresponding new state. For example, if the safe is in state 456 and then you press 8, the safe goes into state 568. 

A trivial strategy to open the safe is to enter all possible codes one after the other. In the worst case, however, this will require n * 10 n keystrokes. By choosing a good digit sequence it is possible to open the safe in at most 10 n + n - 1 keystrokes. All you have to do is to find a digit sequence that contains all n-digit sequences exactly once. KEY Inc. claims that for the military version (n=6) the fastest computers available today would need billions of years to find such a sequence - but apparently they don't know what some programmers are capable of...

Input

The input contains several test cases. Every test case is specified by an integer n. You may assume that 1<=n<=6. The last test case is followed by a zero.

Output

For each test case specified by n output a line containing a sequence of 10 n + n - 1 digits that contains each n-digit sequence exactly once.

Sample Input

1
2
0

Sample Output

0123456789
00102030405060708091121314151617181922324252627282933435363738394454647484955657585966768697787988990

Source


递归会栈溢出,需要用数组模拟。

完整代码:
/*79ms,9180KB*/

#include<cstdio>
#include<cstring>
#include<cmath>
const int M = 1000010;

int list[M], stack[M];///模拟栈
char ans[M];///逆序保存的结果
int s;///模拟栈的指针

void search(int val, int maxn)
{
	int w;
	while (list[val] < 10)
	{
		w = val * 10 + list[val];
		++list[val];
		stack[s++] = w;
		//printf("##%d\n",w);
		val = w % maxn;///当n=2时,m=10
	}
}

int main()
{
	int n, maxn, i, val, a;
	while (scanf("%d", &n), n)
	{
		if (n == 1)
		{
			puts("0123456789");
			continue;
		}
		s = a = val = 0;
		maxn = pow(10, n - 1);
		memset(list, 0, sizeof(list));
		search(val, maxn);
		while (s)
		{
			//printf("%d\n",stack[s-1]);
			val = stack[--s];
			ans[a++] = val % 10 + '0';
			val /= 10;
			search(val, maxn);
		}
		for (i = 1; i < n; ++i) putchar('0');
		while (a) putchar(ans[--a]);
		putchar(10);
	}
	return 0;
}

Linux(31)Rockchip RK3568 Ubuntu22.04上部署 Docker: 问题与解决方案 本博客在总结这些问题及其解决方案,为遇到类似问题的兄弟提供参考,如果我后续有碰到其他Docker 问题也会在此更新补充。 阅读详情

相关推荐

编译原理实验二:LL(1)分析法(附C/C++完整代码)

本文讲述了LL(1)文法的原理及如何用C语言实现。并在给出的代码中实现了消除文法的左递归,First集,Follow集,select集的输出,构造预测分析表并输出,和对任意输入字符串的分析。程序总流程为:从文件读取文法 -> 输出文法信息 -> 消除左递归并输出消除后的文法 -> 计算First集并输出 -> 计算Follow集并输出 ->计算select集并输出 -> 判断是否是LL(1)文法 -> 构造预测分析表并输出 ->手动输入要分析的字符串 -> 输出分析过程和结果读取文件。

W_Wmwmwm的博客 6192

poj 1780 Code(欧拉回路+鼓轮模型)

Code Time Limit:1000MS Memory Limit:65536K Total Submissions:1645 Accepted:625 Description KEY Inc., the leading company in security hardware, has deve...

weixin_30681615的博客 318

基因树构建全流程:从OrthoFinder到iTOL的保姆级教程(附兰科植物案例)

本文提供了一份从OrthoFinder到iTOL的基因树构建全流程保姆级教程。详细解析了利用OrthoFinder构建物种树、IQ-TREE构建无根基因树、Notung进行树调和生根,以及最终在iTOL中实现专业可视化的每一步操作与实战经验,并以兰科植物NB-ARC基因家族为例进行演示,帮助研究者系统掌握基因树分析方法。

tequila的博客 523

POJ 1780(欧拉路)

POJ 1780和HDU 2894基本一样 这两道题做法完全相同,唯一的区别就是HDU 2894是一个环(其实也不算区别。。) 方法就是:对于每一个长度为n的串,让该串的前n-1位为一个节点,后n-1位为另一个节点这样就确定了这个串。 PS:POJ 1780递归会爆栈的,只好写手工站,第一次写,一开始写的超麻烦,后来借鉴别人的了。。还是蒟蒻。。 View Code 1...

weixin_30544657的博客 245

c#.net使用正则表达式验证文本中是否包含手机号码或电话号码?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace RegularPhoneApp { class Program

码农 3584

HTML5网页基础设计——课程介绍专栏

案例: 参考代码: &lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;动手实践&lt;/title&gt; &lt;style&gt; *{ margin: 0; padding: 0; font-size:14px; } dd{ width: 461px; height: 145px; margin: -4px; pad.

shengming_tutou的博客 4594

poj 1780 code(欧拉路)

/* 对于n为密码想要序列最短 那么 1234 2345 这两个一定挨着 就是说 前一个的后n-1位是后一个的前n-1位 假设n==3 我们用0-99作为点的编号建图 然后每个点连出去10条边 两个相邻点有n-1个是重复的 边的权值可用两个点计算 比如 12 23 权值为123 123 234 权值为1234 显然最后的序列是每个边记录一次 也就是跑欧拉路 对于记录下的边权 第...

weixin_30767921的博客 155

【Qt】Qt6系列教程汇总_qt6教程

简介:QT相关电子书、建议和相关参考网址。

2401_87556657的博客 1185

【POJ1780】Code(欧拉回路)

题目大意有一个很水的密码系统,你只需要一阵乱按,按到的最后n位数是对的,锁就打开了。找一个最短的,字典序最小的序列,包含n位数的所有情况。(那个这个序列去凑密码就一定能开) 题目的提示:序列一定是10n+n−110^n+n-1长度的。题解本人很弱,看的其他大神的题解。

CaptainChen的博客 492

【python基础】一文掌握 Jupyter Notebook 的使用(超级详细!)

是一个非营利组织,致力于为多种编程语言的交互式计算开发开源软件、开放标准和服务。Jupyter 于 2014 年由 Fernando Pérez 从IPython衍生出来,支持几十种编程语言的执行环境。Jupyter 项目主要开发并支持(.ipynb 文件格式)、JupyterHub和JupyterLab等交互式计算产品。

数据知道的博客 1万+

企业AI数据资产评估的自动化工具:AI应用架构师的使用指南

在AI驱动的企业数字化转型中,数据资产是支撑模型训练、业务决策的核心燃料。然而,80%的AI项目失败源于数据问题——低质量数据导致模型偏差、未评估的风险引发合规危机、价值不明确的数据浪费资源。手动数据资产评估效率低、易出错,无法满足规模化AI应用需求。本文将以AI应用架构师的视角,拆解企业数据资产评估的核心逻辑,用"餐厅选食材"的生活化比喻解释复杂概念,结合自动化工具的技术原理与实战案例,教你如何从0到1搭建数据资产评估体系。无论是数据质量检测、价值量化还是风险防控,你都能找到可落地的工具方案与实践步骤。

2502_91592937的博客 1629

POJ 1780 Code 题解 欧拉通路 利用栈实现递归

有一种比较暴力的方式可以破解保险箱,即依次从最小的数字输入到最大的数字,例如密码是两位数字,只需要依次输入。位与当前的按键进行拼接,在最优的情况下我们可以保证,每一次按键会产生一个之前没有出现过的密码串,因此对于所有的密码串可能:第一次需要输入。实际上上面建立的图的欧拉回路的起点编号与经过的边的边权组成的序列即为所求序列。,对于这个密码,我们在其后面追加一个按键的时候,其有效的输入就变成了原密码的后。位十进制数字,这个保险箱只要输入包含密码的子串,保险箱就会会打开,例如密码为。

qq_45523675的博客 1258

rk3588 LightSensor适配从驱动到应用层

本文详细介绍了在RK3588平台上实现光感驱动的开发流程。主要包括:1) 在设备树中配置I2C5接口挂载光感设备;2) 编写内核驱动代码实现光感数据采集;3) HAL层通过ioctl与驱动交互;4) 在BoardConfig.mk中启用相关宏定义;5) Framework层通过AutomaticBrightnessController实现自动亮度调节算法;6) 应用层可通过监听系统设置获取光感变化并调整屏幕亮度。整个流程涵盖了从底层驱动到上层应用的完整实现方案,重点解决了光感设备注册、数据采集传输和自动亮度

tzj1058756809的博客 449

POJ 1780 Code(有向图的欧拉通路)

输入n(1&lt;=n&lt;=6),输出长度为10^n + n -1 的字符串答案。 其中,字符串以每n个为一组,使得所有组都互不相同,且输出的字符串要求字典序最小。 显然a[01...(n-1)]和a[12...n]为相邻组,可以看做有一条边从结点a[01...(n-1)]到结点a[12...n]。 题目转化成求欧拉通路。如果以每组的值为结点,则有10^6个结点,10^7条边。会MLE。...

weixin_30437481的博客 151

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ-1780-Code

POJ-1780-Code 传送门 这道题是欧拉回路。emmm。从昨天写到今天 题目大意:破解一个n位的密码,最多输入10^n + n - 1位可以解锁。要你按字典最小序输出这10 ^ n + n - 1位。 先来说说为什么最多需要10^n + n - 1位? n位密码共有10^n种不同的排列。 另外根据题目中的描述:如果正确的密码是4567,当你按下456时,当前状态达到456,然而你后面一位按...

qq_44624316的博客 445

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an &ldquo;advanced algorithms&rdquo; book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

poj1780 code 欧拉回路

题目链接: poj1780 题意: KEY 公司开发出一种新的保险箱。要打开保险箱,不需要钥匙,但需要输入一个正确的、由n 位数字组成的编码。这种保险箱有几种类型,从给小孩子玩的玩具(2 位数字编码)到军用型的保险箱(6 位数字编码)。当正确地输入最后一位编码后,保险箱就立刻打开了。保险箱上没有“确定”键。当你输入超过n 位数字,则只有最后n 位数字有效。例如,对一种

旧时光 1350

poj1780

涉及算法:非递归的dfs 题目大意:求出一个10^n+n-1的序列,其中包含了所有的0~10^n-1的数 题目分析:由于序列长度的限制,我们想要一个一个的写出0~10^n-1所有的数,是不可能的。由于10^n+n-1比我们所需要输出的数的个数只多n-1,所以基本上我们所求的序列每一位都要表示一个数,即第i个数的前n-1位是第i-1个数的后n-1位,而第一个数由于前面没有数字,所以第1个数就只能

gu_solo的博客 1661

POJ 1780 Code(欧拉回路+模拟栈)

POJ 1780 Code(欧拉回路+模拟栈) http://poj.org/problem?id=1780 题意:(题意较复杂)大致思想是给你一个n,表示一个由0-9数字构成的n位密码.这个解锁过程如下:锁一直读入所有内容.只要当它最后读入的n个数字与密码吻合,那么就表示解锁了.现在要你输出一个长度为10^n+n-1的数字序列,这个数字序列包括了n位密码的所有可能.(也就是说输入这个序列,必

code 1815

POJ1780 Code(欧拉路径)

n位密码,要用尽可能短的序列将n位密码的10n种状态的子串都包括,那么要尽量地重合。 题目已经说最短的是10n+ n - 1,即每一个状态的后n-1位都和序列中后一个状态的前n-1位重合。 这题是经典的欧拉路径问题吧,用n位数字10n种状态来作为边,而用重合的n-1位数字表示点。 具体的建图,每个点都引出10条边(十进制),这10条边就代表着10个n位数,前n-1位的数就代表那个...

dengliugong3918的博客 186

POJ-1780 Code 欧拉路径

题意:破解一套1-6位长度密码的系统,寻找这样一个序列:对于N位的密码10^N+N-1长度的连续的长为N的串能够枚举完所有的密码。 解法:构图之后直接dfs会超内存,因此需要使用栈来实现。调了很久。 代码如下: #include &amp;lt;iostream&amp;gt; #include &amp;lt;cstdlib&amp;gt; #include &amp;lt;cstring&amp;gt; #include &amp;...

weixin_33743880的博客 101

一文弄懂回溯算法(例题详解)

回溯是递归的副产品,只要有递归就会有回溯」,所以回溯法也经常和二叉树遍历,深度优先搜索混在一起,因为这两种方式都使用了递归。详细地说:可以将回溯算法过程理解成一颗多叉树的遍历过程, 回溯法按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯;否则,进入该子树,继续按深度优先策略搜索。void backtrack(参数) {

2302_79862386的博客 4281

POJ - 1780 Code (欧拉回路+手写DFS)

Description KEY Inc., the leading company in security hardware, has developed a new kind of safe. To unlock it, you don't need a key but you are required to enter the correct n-digit code on a keyp

那些年 1274

POJ1780 Code 欧拉回路+非递归DFS

用DFS找一个欧拉回路,按照字典序输出路径。 由于状态过多,不能用递归,要用非递归实现DFS(好麻烦,,,),然后不能用stack会超时,自己写个数组吧,别偷懒了。 关于这题为什么会是欧拉回路呢。 首先题意:题目告诉我们了密码的长度为n (那么一个密码一共可能有10^n种可能),然后由于当输入密码长度大于n时,只有最后n为有效。这样我们只要用一个(10^n+n-1)长的数字序列,就能破解这个

1356

POJ 1780 Code (欧拉回路 +构造)

Code Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2150   Accepted: 785 Description KEY Inc., the leading company in security hardware, has developed a new

Tc的专栏 766

poj 1780 欧拉回路构造字符串

和西安邀请赛D题类似的题目 这道题会爆栈,所以要非递归写,但是看了很久其实代码没理解,回头重写 #include #include #include using namespace std; const int SIZE = 100000+10; int a,s; int sta[SIZE*10],li[SIZE*10]; char ans[SIZE*10]; void s

Pilgrim 1348

POJ-1780 Code

Code Time Limit: 1000MS   Memory Limit: 65536K       Description KEY Inc., the leading company in security hardware, has developed a new kind of safe. To unlock it, you d

JSure的代码库 1132

poj 1780 欧拉回路求解

Code Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2520   Accepted: 881 Description KEY Inc., the leading company in security hardware, has developed a n

转角的守望 610
上一篇: UVa 540 Team Queue (STL list&queue模拟插队)
下一篇: POJ 1835 宇航员 (模拟&三维向量旋转)
synapse7
博客等级 码龄14年 432粉丝 701原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值