例18   火柴棒等式 用n根火柴棍,可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棒拼出的整数(若该数非零,则最高位不能是0).用火柴棒拼数字0~9的拼法如图1所示. 图1  用火柴棒拼的数字0~9 另外,加号与等号各自需要两根火柴棒. 编写一个程序,输入火柴棒的根数n,输出能拼成的不同等式的数目.说明:(1)如果A≠B,则A+B=C与B+A=C视为不同的等式(A.B.C>=0):(2)A和B最多为3位数:(3)n根火柴棒必须全部用上. 例如,输入18,输出应为9.即18根…
1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题…
例9    生理周期 问题描述 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为 23 天.28 天和33 天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏捷,精力容易高度集中.因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天.对于每个人,我们想知道何时三个高峰落在同一天. 对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间).你的任务是给定一个从当年第一天开始数的天数…
例14   丑数 问题描述 丑数是其质因子只可能是2,3或5的数.前10个丑数分别为1, 2, 3, 4, 5, 6, 8, 9, 10, 12.输入一个正整数n,求第n个丑数. 输入格式 每行为一个正整数n (n <= 1500),输入n=0结束. 输出格式 每行输出一个整数,表示求得的第n个丑数. 输入样例 1 2 50 0 输出样例 1 2 243 (1)编程思路. 根据丑数的定义,丑数从小到大排列的序列中的一个数应该是其前面某个数乘以2.3或者5的结果.因此,可以定义一个数组num[15…
例17   百灯判亮 问题描述 有序号为1.2.3.….99.100的100盏灯从左至右排成一横行,且每盏灯各由一个拉线开关控制着,最初它们全呈关闭状态.有100个小朋友,第1位走过来把凡是序号为1的倍数的电灯开关拉一下:接着第2位小朋友走过来,把凡是序号为2的倍数的电灯开关拉一下:第3位小朋友走过来,把凡是序号为3的倍数的电灯开关拉一下:如此下去,直到第100个小朋友把序号为100的电灯开关拉一下.问这样做过一遍之后,哪些序号的电灯是亮着的? 输入格式 每行测试数据是一个正整数n,代表第n盏灯…
例22  插入排序 问题描述 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素或记录的任意序列,重新排列成一个以关键字递增(或递减)排列的有序序列. 排序的方法有很多,简单插入排序就是一种简单的排序算法. 插入排序的基本思想是顺序将一个待排序的记录按其关键字值的大小插入到一个有序的序列中,插入后该序列仍然是有序的. 简单插入排序是一种最简单的排序方法.它的排序过程为:先将待排序序列中第1个记录看成是一个有序的子序列,然后从第2个记录起依次逐个地插入到这个有序的子序列中去.这很像玩扑…
例21  折半查找 问题描述 顺序查找是一种最简单和最基本的检索方法.其基本思想是:从检索表的一端(如表中第一个记录或最后一个记录)开始,逐个进行记录的关键字和给定值的比较.若某个记录的关键字和给定值比较相等,则查找成功:否则,若直至检索表的另一端(如最后一个记录或第一个记录),其关键字和给定值比较都不等,则表明表中没有待查记录,查找不成功. 顺序查找可以写成一个简单的一重循环,循环中依次将检索表(不妨设为数组a)中的元素与给定值比较,若相等,用break退出循环.算法描述为: for (i=0…
例16  巧解算式 问题描述 在1.2.3.4.5.6.7.8.9.10个数中间加上加号或减号,使得到的表达式的值为自然数N,如果中间没有符号,则认为前后为一个数,如1 2 3认为是一百二十三(123). 例如:当N=100时,表达式值为100的填法有24种.123+4+5+67-89-10=100是一种填法,1+2+3+4+56+7+8+9+10=100也是一种填法. 编写一个程序,找出使表达式的值等于N的填写方法有多少种? 输入格式 输入包含多组测试数据.每组测试数据一个自然数n,占据独立一…
例15   除法算式 问题描述 输入正整数n(2≤n≤68),按从小到大输出所有形如abcde/fghi=n的表达式.其中a~i为1~9的一个排列. 输入格式 每行为一个正整数n (n <= 1500),输入n=0结束. 输出格式 输出满足条件的所有形如abcde/fghi=n的表达式,每个表达式占一行,具体格式参见输出样例. 输入样例 4 20 62 0 输出样例 15768/3942=4 17568/4392=4 23184/5796=4 31824/7956=4 No Solution!…
例13        最大子段和 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大.例如在序列2,-4,3,-1,2,-4,3中,最大的子段和为4,该子段为3,-1,2. 输入格式 第一行是一个正整数N,表示了序列的长度. 第二行包含N个绝对值不大于10000的整数Ai ,描述了这段序列. 输出格式 一个整数,为最大的子段和是多少.子段的最小长度为1. 输入样例 7 2 -4 3 -1 2 -4 3 输出样例 4 (1)编程思路. 可以从长度为n的数列的最左端(设为数组元素a[1]…
例4    水仙花数 题目描述 一个三位整数(100-999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数. 输入格式 没有输入 输出格式 若干行,每行1个数字. 输入样例 无 输出样例 153 * * * ... * * * (输出被和谐了) (1)编程思路1. 对三位数n(n为100~999之间的整数)进行穷举.对每个枚举的n,分解出其百位a(a=n/100).十位b(b=n/10%10)和个位c( c=n%10),若满足a*a*a+…
例6    数字反转 题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入格式 一个整数 N 输出格式 一个整数,表示反转后的新数. 输入样例 #1 123 输出样例 #1 321 输入样例 #2 -380 输出样例 #2 -83 (1)编程思路. 将一个非负整数number各位上的数字依次分离出来,其操作步骤为: 1)分离出number的个位数,即number%10. 2)…
例10        最大公约数 问题描述 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b.若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c. 输入数据 第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b. 输出格式 输出对应的c,每组测试数据占一行. 输入样例 2 6 2 12 4 输出样例 4 8 (1)编程思路. 利用转辗相除法求两个整数的最大公约数.例如,求整数m=48,n=18两个数的最大公约数的方法如左图所示. 具体做法是:…
例25    确定进制 问题描述 6*9 = 42 对于十进制来说是错误的,但是对于13进制来说是正确的.即 6(13)* 9(13)= 42(13),因为,在十三进制中,42 = 4 * 13 + 2 = 54(10). 编写一个程序,输入三个整数p.q和r,然后确定一个进制B(2<=B<=16),使得在该进制下 p * q = r.如果 B有很多选择,输出最小的一个.例如,p = 11,q = 11,r = 121.则有 11(3) * 11(3)= 121(3),还有 11(10)* 1…
例11  求质数 问题描述 质数是指除了有1和自身作为约数外,不再有其他约数的数.比如:3.5.7是质数.而9不是质数,因为它还有约数3. 编写程序求给定区间中的所有质数. 输入格式 两个整数a和b,其中1≤a≤b≤100000. 输出格式 输出给定范围的所有质数,输出时每个质数占5列,每行输出10个质数. 输入样例 100  200 输出样例 101  103  107  109  113  127  131  137  139  149 151  157  163  167  173  17…
例23  数列求和 问题描述 已知某数列前两项为2和3,其后继项根据前面最后两项的乘积,按下列规则生成: ① 若乘积为一位数,则该乘积即为数列的后继项: ② 若乘积为二位数,则该乘积的十位上的数字和个位上的数字依次作为数列的两个后继项. 输出该数列的前N项及它们的和. 输入格式 一个整数N(2≤N≤1000). 输出格式 第1行输出该数列的前N项的和. 第2行输出该数列的前N项. 输入样例 10 输出样例 sum(10)=44 2 3 6 1 8 8 6 4 2 4 (1)编程思路. 编写函数i…
例19   欢乐的跳 题目描述 一个n个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了[1,n-1]之间的所有整数,则称之符合“欢乐的跳”,如数组1 4 2 3符合“欢乐的跳”,因为差的绝对值分别为:3,2,1. 给定一个数组,你的任务是判断该数组是否符合“欢乐的跳”. 输入格式 每组测试数据第一行以一个整数n(1≤n≤1000)开始,接下来n个空格隔开的整数. 输出格式 对于每组测试数据,输出一行若该数组符合“欢乐的跳”则输出"Jolly",否则输出"Not jo…
例12   Eratosthenes筛法求质数 问题描述 Eratosthenes筛法的基本思想是:把某范围内的自然数从小到大依次排列好.宣布1不是质数,把它去掉:然后从余下的数中取出最小的数,宣布它为质数,并去掉它的倍数.在第1步之后,得到质数2,筛中只包含奇数:第2步之后,得到质数3,一直做下去,当筛中为空时结束. 用Eratosthenes筛法求给定区间内的所有质数. 输入格式 两个整数a和b,其中1≤a≤b≤10000 输出格式 输出给定范围[a,b]间的所有质数,输出时每个质数占6列,…
例5    分解质因数 题目描述 将一个正整数分解质因数.例如:输入90,输出 90=2*3*3*5. 输入 输入数据包含多行,每行是一个正整数n (1<n <100000) . 输出 对于每个整数n将其分解质因数. 输入样例 90 256 199 输出样例 90=2*3*3*5 256=2*2*2*2*2*2*2*2 199=199 (1)编程思路. 对整数n进行分解质因数,应让变量i等于最小的质数2,然后按下述步骤完成: 1)如果i恰等于n,则说明分解质因数的过程已经结束,输出即可. 2)…
例3    Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1  1/2  1/3  1/4  …… 2/1  2/2  2/3  …… 3/1  3/2  …… 4/1  …… …… 现以z字型方法给上表的每项编号.方法为:第一项是1/1,然后是1/2.2/1.3/1.2/2.1/3.1/4.2/3……. 输入格式 整数N(1≤N≤10000000) 输出格式 表中的第N项 输入样例 7 输出样例 1/…
例28        直线蛇形阵 问题描述 编写程序,将自然数1.2.….N2按蛇形方式逐个顺序存入N阶方阵.例如,当N=3和N=4时的直线蛇形阵如下图1所示. 图1  直线蛇形阵 输入格式 一个正整数n(1≤n≤20). 输出格式 N阶满足要求的直线蛇形方阵.输出时共n行,每行n个数,每个数占4列. 输入样例 4 输出样例 13  14  15  16 12  11  10   9 5   6   7   8 4   3   2   1 (1)编程思路. 从图1可以看出,直线蛇形阵的构造是从最…
例27        回旋方阵 问题描述 编写程序,生成从内到外是连续的自然数排列的回旋方阵.例如,当n=3和n=4时的回旋方阵如下图1所示. 图1  由内到外回旋方阵 输入格式 一个正整数n(1≤n≤20). 输出格式 N阶满足要求的由内到外回旋方阵.输出时共n行,每行n个数,每个数占4列. 输入样例 5 输出样例 21  20  19  18  17 22   7   6   5  16 23   8   1   4  15 24   9   2   3  14 25  10  11  12…
例26   二进制数中1的个数 问题描述 如果一个正整数m表示成二进制,它的位数为n(不包含前导0),称它为一个n位二进制数.所有的n位二进制数中,1的总个数是多少呢? 例如,3位二进制数总共有4个,分别是4(100).5(101).6(110).7(111),它们中1的个数一共是1+2+2+3=8,所以所有3位二进制数中,1的总个数为8. 输入格式 一个整数T,表示输入数据的组数,接下来有T行,每行包含一个正整数 n(1<=n<=20). 输出格式 对于每个n ,在一行内输出n位二进制数中1…
例8    尼科彻斯定理 题目描述 尼科彻斯定理可以叙述为:任何一个整数的立方都可以表示成一串连续的奇数的和.需要注意的是,这些奇数一定是连续的,如:1,3,5,7,9,…. 例如,对于整数5,5*5*5=125=21+23+25+27+29. 对于整数6,216=31+33+35+37+39+41, 也可以表示为216=7+9+11+13+15+17+19+21+23+25+27+29. 请你编写程序对这个定理进行验证. 输入格式 一个整数n(2≤n≤1000). 输出格式 将n的立方表示为一…
例24   数制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入格式 共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A-F表示数码10-15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16). 输出格式 一个正整数,表示转换之后的m进制数. 输入样例 16 FF 2 输出样例 11111111 (1)编程思路. 十进制整数转换为R进制整数的…
例20  过河卒 题目描述 如图1,在棋盘的A点有一个过河卒,需要走到目标B点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如图1的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点.例如,图1中C点上的马可以控制9个点(图中的P1,P2,…,P8 和C).卒不能通过对方马的控制点. 棋盘用坐标表示,A点(0,0).B点(n,m)(n,m为不超过50的整数,并由键盘输入),同样马的位置坐标通过键盘输入,并约定C<>A,同时C<>B. 编写程序,计算…
例7    级数求和 题目描述 已知: Sn =1+1/2+1/3+…+1/n.显然对于任意一个整数 k,当 n 足够大的时候,Sn>k. 现给出一个整数 k,要求计算出一个最小的 n,使得 Sn>k. 输入格式 一个正整数 k 输出格式 一个正整数 n 输入样例 1 输出样例 2 (1)编程思路. 用简单的循环完成多项式求和.循环控制条件为和S<=K. (2)源程序. #include <stdio.h> int main() { int k,n; double s; s=…
例2   一元二次方程 [题目描述] 输入系数a.b和c,求方程ax2+bx+c=0的根. [输入格式] 输入数据有多组.每组数据包括三个系数a,b,c.当a=0时,输入数据结束. [输出格式] 输出方程的根,格式参见输出样例,保留到小数点后2位. [输入样例] 1 2 1 1.0 -4.0 3.0 1.5 2.0 1.5 0 0 0 [输出样例] x1=x2=-1.00 x1=3.00,x2=1.00 x1=-0.67+0.75i,x2=-0.67-0.75i (1)编程思路. 根据输入的系数…
例1   鸡兔同笼 [问题描述] 一个笼子里面关了鸡和兔子(鸡有2 只脚,兔子有4 只脚,没有例外).已知笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物? [输入数据] 第1 行是测试数据的组数n,后面跟着n 行输入.每组测试数据占1 行,包括一个正整数a (a < 32768). [输出要求] n 行,每行输出对应一个输入.输出是两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用空格分开.如果没有满足要求的情况出现,则输出2 个0. [输入样例] 2 3 2…
例31   全排列问题 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入格式 n(1≤n≤9) 输出格式 由1-n组成的所有不重复的数字序列,每行一个序列.序列中每个数字占5个宽度. 输入样例 3 输出样例 1    2    3 1    3    2 2    1    3 2    3    1 3    1    2 3    2    1 (1)编程思路. 采用递归的方法来生成全排列. (2)源程序. #include <…