公式题:1249和1290(另2674)

1249:三角形。本题问题为,求解N个三角形可以把一个平面分成多少份。

1290:献给杭电五十周年校庆的礼物。本题问题在于:切N刀可以把一个球形蛋糕最多切成多少块。

两道题之所以放到一起总结,是因为其不但提问的方式相似,解题的方法也都是由公式得来的。

1249:思路:前面假设有n-1个三角形,考虑一个新三角形每个边切已有边交点为2(n-1),新增小面为3*(2(n-1)-1),再加新增三个角,共新增小面6(n-1)块。所以a[n] = a[n-1]+6(n-1)。这样可把数据存入数组中储存,也可以由累加法直接求通项公式:

a(n)=(a(n)-a(n-1))+(a(n-1)-a(n-2))+……+(a(2)-a(1))+a(1)

解之得:a(n) = 3*n^2-3n+2。

1290:这种题型都是有固定的公式的,二维的一般是an^2+bn+c,三维的一般是an^3+bn^2+cn+d。即圆形的蛋糕和球形的蛋糕,然后根据已知的几个数据进行代入,便可得到方程式为:

y = (x*x*x+x*5+6)/6;  (x为刀数)

2674考验大数阶乘的取模,最为简便,只要采用简单的数学推理就好。

当(A*B)%m时,不妨将括号内展开,有:

((k*m+a)(k*m+b))%m=(k^2*m^2+(a+b)*m+ab)%m=ab

可见在相乘后,除了最后一项m不参与的相乘的结果会被保留,其余的无论是m的几次幂,是m的多少倍,都会被取模去掉,可以使用多个因子相乘来检验。故有if(k>=2009) k=k%2009。

可以知道,当某一个数的阶乘达到了2009的整数倍,那么该数之后的所有数的阶乘都会是2009的整数倍,事先找到该数,并且在程序的k值输入后直接判断与该数的大小关系,若k较大,则直接输出0即可。

你可能感兴趣的:(公式题:1249和1290(另2674))