看到csdn的编程挑战,于是自己给拔下来一些分享给大家,由于时间问题没有做,陆续会把我写的参考程序公布给大家.
开始题目:
1. N个人(编号1-N),站成一排,进行报数游戏。报数过程可能进行很多轮,有如下规则:
(1) 如果剩余人数不超过3个人,则游戏结束。
(2) 大家报数,然后留下报奇数的人继续游戏,或者留下报偶数的人继续游戏。
(3) 重复如此(1)(2)两步骤,到游戏结束。
问:最终剩下的三人组有多少种情况?(注意是三人组,例如如果最后剩下2个或者1个人,不计入结果中)。
输入n, (0<n<=10000000) 输出最终结果。
2. 平衡二叉树的定义是递归定义的:
(1) 单个节点是平衡二叉树
(2)平衡二叉树的左右子树分别都是平衡二叉树
(3)平衡二叉树的左右子树高度差不超过1。
求n个节点有m个叶子节点的平衡二叉树个数 (0<m <= n<=20)。
例如: n = 1,m = 1,输出:1; n = 2,m = 1,输出:2; n = 2,m = 2,输出:0。
3. 在二十进制中,我们除了使用数字0-9以外,还使用字母a-j(表示10-19),
给定两个二十进制整数,求它们的和。
输入是两个二十进制整数,且都大于0,不超过100位;
输出是它们的和(二十进制),且不包含首0。我们用字符串来表示二十进制整数。
4. 如果一个数正着读和反着读一样大,则这个数叫做回文数,例如121是回文数,123454321是回文数。
现给定一个正整数x,输出一个回文数y,
要求y > x,并且组成x的所有数字之和与组成y的所有数字之和相等,以及y > x。
x在10^1000以内,因为数字较大,我们用字符串作为输入和输出。
如果无解,请输出Impossible。
如果有多个y,输出最小的那个。
例如: 输入919,输出14941 输入1,输出Impossible
5. {5 3 1}和{7 5 3}是2组不同的等差三元组,
除了等差的性质之外,还有个奇妙的地方在于:5^2 – 3^2 – 1^2 = 7^2 – 5^2 – 3^2 = N = 15。
{19 15 11}同{7 5 3}这对三元组也存在同样的性质:19^2 – 15^2 – 11^2 = 7^2 – 5^2 – 3^2 = N = 15。
这种成对的三元组还有很多。
当N = 15时,有3对,分别是{5 3 1}和{7 5 3},{5 3 1}和{19 15 11},{7 5 3}和{19 15 11}。
现给出一个区间 [a,b]求a <= N <= b 范围内,共有多少对这样的三元组。(1 <= a <= b <= 5*10^6)
例如:a = 1,b = 30,输出:4。(注:共有4对,{5 3 1}和{7 5 3},{5 3 1}和{19 15 11},{7 5 3}和{19 15 11},{34 27 20}和{12 9 6})
6. 必应词典是微软推出的新一代英语学习引擎,里面收录了很多我们常见的单词。
但现实生活中,我们也经常能看到一些毫无规则的字符串,导致词典无法正常收录,不过,我们是否可以从无规则的字符串中提取出正规的单词呢?
例如有一个字符串"iinbinbing",截取不同位置的字符‘b’、‘i’、‘n’、‘g’组合成单词"bing"。
若从1开始计数的话,则‘b’ ‘i’ ‘n’ ‘g’这4个字母出现的位置分别为(4,5,6,10) (4,5,9,10),(4,8,9,10)和(7,8,9,10),故总共可以组合成4个单词”bing“。
咱们的问题是:现给定任意字符串,只包含小写‘b’ ‘i’ ‘n’ ‘g’这4种字母,请问一共能组合成多少个单词bing?
字符串长度不超过10000,由于结果可能比较大,请输出对10^9 + 7取余数之后的结果。
7. 给定两个字符串,仅由小写字母组成,它们包含了相同字符。
求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的开头。
例如给定两个字符串“abcd" "bcad" ,输出:2,因为需要操作2次才能把"abcd"变成“bcad" ,方法是:abcd->cabd->bcad。
8. 给出一个正n边形,顶点有编号1-n,要求画出k条对角线,这k条对角线在多边形内部没有交点(只可能相交在顶点处),问有多少种方法。
输入多边形边数n和要画的对角线条数k。 4<=n<=1000000000 1<=k<=n 输出,方法数,由于结果较大,只输出对 1000003取余数的结果。
样例: 例如输入4 1输出2 输入5 2输出 5 分析:
样例 (1) 正四边形,即正方形。画1条对角线,可以画(1,3)也可以画(2,4)
样例 (2) 正五边形,画两条不相交的对角线,可以画 (1,3)和(1,4) (2,4)和(2,5) (3,1)和(3,5) (4,1)和(4,2) (5,2)和(5,3)
9. 如果一个数能够被组成它的各个非0数字整除,则称它是完美数。
例如:1-9都是完美数,10,11,12都是完美数,但是13就不是完美数(因为13不能被组成它的数字“1”和“3”整除)。
现在给定正整数x,y,求x和y之间(包含x和y)一共有多少个完美数。输入数据1<=x<=y<=2000000000。
例如: x = 1, y = 13,输出12; x = 13,y = 13,输出0; x = 100,y = 1000,输出106。