计算机题库编程题讲解更新篇
已知 f(0)=f(1)=1 f(2)=0 f(n)=f(n-1)-2*f(n-2)+f(n-3) (n>2) 求f(0)到f(50)中的最大值(598325) 分析:类似菲波拉切数列问题的解决方法,采用递推法(参考教材P129) main() { int i; long f0,f1,f2,max; f0=1,f1=1,f2=0,max=0; for(i=1;i<17;i++) { f0=f2-2*f1+f0; f1=f0-2*f2+f1; f2=f1-2*f0+f2; if(max2 求F(2)+F(4)+F(6)+……+F(50)值(20365011073) 已知:A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ……, 求A50.(按四舍五入的方式精确到小数点后第三位)。(0.618) 设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的所有四位数abcd的和(3665) 提示:该类型题目除了用上题方法求解之外,还可以使用五重循环来解决。试着对这两种方法进行比较。 main() { int a,b,c,d,e; long sum=0; for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(e=2;e<=9;e++) if((a*1000+b*100+c*10+d)*e==b*1000+c*100+d*10+e) sum=sum+(a*1000+b*100+c*10+d); printf("%ld\n",sum); } 一个素数,依次从个位开始去掉一位,二位.....,所得的各数仍然是素数,称为超级素数。求[100,999]之内超级素数的个数。(39) 一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,但尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的和。(21645) 德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对。试求1234可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)(25) 解简单方程 求方程8x-5y=3,在|x|<=150, |y|<=200内的整数解。试问这样的整数解中|x|*|y|的最大值是多少? (24676) 分析:x在-150到150之间取值,y在-200到200之间取值,对于这两个区间任意一组数据组合,判断其是否满足方程,如果满足则求出|x|*|y| ,然后逐次比较。 #include "math.h" /*这一行不能少*/ main( ) { int x, y, t, max=0; for (x=-150; x<=150; x++) for (y=-200; y<=200; y++) if (8*x-5*y==3) { t= abs(x) * abs(y); if (max