2016年“梦想杯”江苏省小学生“信息与未来”夏令营
IT小能手PK之程序设计
1.数列求和(10分)
小明写出了一个数列,第i 项ai 的值为i2。数列从第一项(i=1)开始如下:1,4,9,16,25,……,编程求出这个数列前n 项的和。
输入:整数n (1<=n<=1000)
2.幸运数字(15分)
小明认为,如果以下条件之一成立,则正整数x 就是一个幸运数字:
1、x 是4的倍数;
2、x 是7的倍数;
3、x 转换为字符串后,包含子串”44”或“77”.
例如,105(7的倍数)、442(包含“44”)、1284(4的倍数)都是幸运数字,而474则不是。编程统计1到n中幸运数字的数量。
输入:整数n (1<=n<=1000000)
3.洗牌(15分)
小明把n(n为偶数)张牌按编号顺序1、2、3、……、n排成一堆,然后开始洗牌。一次洗牌的过程如下:
1、对于一堆编号为a1,a2,……,an,首先将牌分成均匀的两堆:
a1, a2, ……, am和a m+1, a m+2, ……, a n(其中m=n/2)
2、然后按顺序交叉插入:
a1, a m+1, a2, a m+2, ……, am, an
洗牌过程总共重复了k 次,请你编程帮助小明模拟洗牌的过程。
例如n=6,初始时,牌堆中牌的编号为1、2、3、4、5、6.
首次洗牌时,会将牌分成1、2、3和4、5、6两堆,交叉插入后的结果为1,4,2,5,3,6.
再次洗牌,会将牌分成1,4,2和5,3,6两堆,交叉插入后,得到1,5,4,3,2,6。
输入:正整数n(牌的数量),k(洗牌的次数),i(牌的位置)。1<=n, k<=1000,1<=i<=n,保证n是偶数。
4.字符串替换(20分)
小明最近迷上了字符串操作。对每个字符串,小明每次可以执行以下两种操作之一:
1、把字符串的某个字符改成任意一个其他字符,花费1的代价;
2、交换字符串中的两个字符,花费0的代价。
小明发现,把一个字符串通过一系列的操作,可以转换成任何一个与之等长的字符串,例如,把“hello”变为“world”的一种代价为3的操作序列如下:
1、hello -> wello(替换h为w,代价为1)
2、wello -> wolle(交换e和o,代价为0)
3、wolle -> worle(替换l为r,代价为1)
4、worle -> world(替换e为d,代价为1)
小明发现,无法用少于3次的代价将“hello”变为“world”。
显然,不同的转换方案花费的代价是不同的,请编程帮助小明计算把一个字符串变为另一个字符串的最小代价。
本题中的字符串根据给定的初始数值s按以下规则生成:
for i=1, 2, …, n
s<-(s*345) mod 19997
第二个字符串的第i 个字符的ASCII码为(97+(s mod 26))
输入:正整数n(字符串长度),s(数据生成器的初始数值)。1<=n<=1000,1<=s<=19997。输出:将第一个字符串转换为第二个字符串的最少代价。
在样例1中,生成的字符串是“lzvv”和“xylv”,将第一个字符串变为第二个的最小代价为2。
5.方格取数(20分)
在n行、m列的方格矩阵中,每个方格都包含一个数字。小明可以从任意方格出发开始移动。每次移动可以移到与当前方格有一条边相邻的方格(即向上、下、左或右方向移动1格,且不能移出边界)。除此之外,你移动到的方格中的数字必须比当前方格中的数字更大。
请你帮助小明编程规划移动路径,使路径上经过的所有数字之和最大。
本题方格中的数据根据输入的初始数字s 按照如下算法生成:
for i=1,2,…,n
for j=1,2,…,m
s<-(s*345) mod 19997
矩阵第i行第j列方格中的数字为(s mod 10)+1
字符串长度统计输入:正整数n、m(方格的大小),s(数据生成器的初始数值)。1<=n,m<=100, 1<=s<=19997。输出:所有合法路径中的最大数字和。
4+5+7+8=24。
6.素数分解(20分)
素数,又称质数,是指除1和其自身之外,没有其他约数的正整数。例如,2、3、5、13都是质数,而4、9、12、18则不是。
虽然素数不能分解成除1和其自身之外整数的乘积,但却可以分解成更多素数的和。你需要编程求出一个正整数最多能分解成多少个互不相同的素数的和。
例如,21=2+19是21的合法分解方法。21=2+3+5+11则是分解为最多素数的方法。
输入:n(10<=n<=200)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。