这道题是道规律极强的题。。。真佩服在赛场上快速找到规律的人。
d[i] a[i] res[i]
0 1.000000
Case 1: 0.500000 2.000000 1.000000
Case 2: 0.375000 2.750000 1.500000
Case 3: 0.312500 3.375000 2.000000
Case 4: 0.273438 3.921875 2.375000
Case 5: 0.246094 4.414063 2.750000
Case 6: 0.225586 4.865234 3.062500
Case 7: 0.209473 5.284180 3.375000
Case 8: 0.196381 5.676941 3.648438
Case 9: 0.185471 6.047882 3.921875
Case 10: 0.176197 6.400276 4.167969
Case 11: 0.168188 6.736652 4.414063
Case 12: 0.161180 7.059013 4.639648
Case 13: 0.154981 7.368975 4.865234
Case 14: 0.149446 7.667867 5.074707
Case 15: 0.144464 7.956796 5.284180
Case 16: 0.139950 8.236696 5.480560
Case 17: 0.135834 8.508363 5.676941
Case 18: 0.132061 8.772484 5.862411
Case 19: 0.128585 9.029655 6.047882
Case 20: 0.125371 9.280396 6.224079
易发现,偶数的res[i]=(res[i-1]+res[i+1])/2
故只要知道奇数位的值即可。抽象成序列a[i]。相邻两项做差,抽象出d[i]序列。
化为分数,相邻两项做商,发现d[i]=d[i-1]*(2*i-1)/(2*i)。
不一定要用整数来找规律,可以试试分数。或许会有意外的收获哦。
#include#include #include #include #include using namespace std;const int maxn=1510;double a[maxn], d[maxn];void getd(){ d[1]=0.5; for(int i=2; i