内容发布更新时间 : 2025/1/10 21:04:06星期一 下面是文章的全部内容请认真阅读。
进制转换
源程序名 change.??? (pas,c,cpp) 可执行文件名 change.exe 输入文件名 change.in 输出文件名 change.out
请你编一程序实现两种不同进制之间的数据转换。
输入:
输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。 输出:
输出仅一行,包含一个正整数,表示转换之后的m进制数。
样例: change.in 16 FF 2
change.out 11111111
数的计算(20分) count.pas 问题描述
我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1. 不作任何处理;
2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 样例: 输入: 6
满足条件的数为 6 (此部分不必输出) 16 26 126 36 136 输出: 6
黑白棋子的移动
源程序名 chessman.???(pas/c/cpp) 可执行文件名 chessman.exe 输入文件名 chessman.in 输出文件名 chessman.out
有2n个棋子(n≥4)排成一行,开始为位置白子全部在左边,黑子全部在右边,如下图为n=5的情况:
○○○○○●●●●●
移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置。每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。如n=5时,成为:
○●○●○●○●○●
任务:编程打印出移动过程。 样例
chessman.in 7
chessman.out
step 0:ooooooo*******-- step 1:oooooo--******o* step 2:oooooo--******o* step 3:ooooo--*****o*o* step 4:ooooo*****--o*o* step 5:oooo--****o*o*o* step 6:oooo****--o*o*o* step 7:ooo--***o*o*o*o* step 8:ooo*o**--*o*o*o* step 9:o--*o**oo*o*o*o* step 10:o*o*o*--o*o*o*o* step 11:--o*o*o*o*o*o*o*
问题分析
我们先从n=4开始试试看,初始时:
○○○○●●●●
第1步:○○○——●●●○●(—表示空位) 第2步:○○○●○●●——● 第3步:○——●○●●○○● 第4步:○●○●○●——○●
第5步:——○●○●○●○●
如果n=5呢?我们继续尝试,希望看出一些规律,初始时:
○○○○○●●●●● 第1步:○○○○——●●●●○●
第2步:○○○○●●●●——○●
这样,n=5的问题又分解成了n=4的情况,下面只要再做一下n=4的5个步骤就行了。同理,n=6的情况又可以分解成n=5的情况,??,所以,对于一个规模为n的问题,我们很容易地就把它分治成了规模为n-1的相同类型子问题。
数据结构如下:数组c[1..max]用来作为棋子移动的场所,初始时,c[1]~c[n]存放白子(用字符o表示),c[n+1]~c[2n]存放黑子(用字符*表示),c[2n+1],c[2n+2]为空位置(用字符—表示)。最后结果在c[3]~c[2n+2]中。
Hanoi双塔问题
源程序名 hanoi.???(pas/c/cpp) 可执行文件名 hanoi.exe 输入文件名 hanoi.in
输出文件名 hanoi.out
给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有空的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。现要将 这些国盘移到C柱上,在移动过程中可放在B柱上暂存。要求:
(1)每次只能移动一个圆盘;
(2) A、B、C三根细柱上的圆盘都要保持上小下大的顺序;
任务:设An为2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出An。 【输入】
输入文件hanoi.in为一个正整数n,表示在A柱上放有2n个圆盘。
【输出】
输出文件hanoi.out仅一行,包含一个正整数,为完成上述任务所需的最少移动次数An。
【输入输出样例1】 hanoi.in 1 【输入输出样例2】 hanoi.in 2
【限制】
hanoi.out 6 hanoi.out 2