算法竞赛入门经典 第二章上机练习

2-1  位数(digit)

输入一个不超过10^9的正整数,输出它的位数。例如12735的位数是5.请不要任何数学函数,只用四则运算和循环语句实现。

Code

2-2  水仙花数(daffodil)

输出100~999中的所有水仙花数。若3位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数。例如153=1^3+5^3+3^3,所以153是水仙花数。

Code

2-3  韩信点兵(hanxin)

相传寒心才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、无人一排、七人一排地变化队形,而他 每次只掠过一眼队伍的排尾就知道 总人数了。输入3个非负整数a,b,c,表示每种队形队尾的人数(a<3, b<5, c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100.

样例输入:2 1 6

样例输出:41

输入:2 1 3

输出:No answer

Code

2-4  倒三角(triangle)

输入正整数n <= 20, 输出一个n层的倒三角。例如n=5时输出如下:

5
#########
#######
  #####
   ###
    #

Code

2-5  略过

2-6  调和级数(harmony)略过

2-7  近似计算

π/4=1-1/3+1/5-1/7+……,直到最后一项小于10^-6.

Code

2-8子序列的和(subsequence)

输入两个正整数n<m<10^6,输出12/n^2+1/(n+1)^2+…..+1/m^2,保留5位小数。例如n=2, m=4时答案是0.42361;n=65536,m=655360时答案为0.00001.注意本题有陷阱。

Code

2-9  分数化小数(decimal)

输入正整数a,b,c,输出a/b的小数形式,精度到小数点c位。a,b<=10^6,c<=100,例如a=1,b=6,c=4时,应输出 0.1667。

Code


/*printf的特殊用法:对于m.n的格式可以用如下方法表示char ch[20];
printf("%*.*s\n",m,n,ch);前边的*定义的是总的宽度,
后边的定义的是输出的个数。分别对应外面的参数m和n 。
这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。 
*/

2-10  排列(permutation)

用1,2,3…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有的解。提示:不必太动脑筋。

被毙了恼怒,网上搜索如下代码,长见识了,好新颖的思维。

Code
原文地址:https://www.cnblogs.com/sanghai/p/2824022.html