51 条题解
-
0silverbullet LV 6 @ 2008-10-25 13:38:45
total := trunc((n + 1) * v);
这样就过了
但是total := Round(n*v);
就只有88 不知道为什么啊
感觉模拟前几个数都是对的 -
02008-10-19 19:04:04@
.......................
99.... -
02008-10-15 22:11:43@
ORZ wly888_1214 大牛
-
02008-09-24 19:39:32@
Orz wly888大牛
-
02008-09-09 14:50:43@
神奇的黄金分割,我是看不出来
-
02008-08-28 19:58:22@
谁出的这个题?我只能说这个人把Fibonacci数列藏得太好了,天衣无缝。
我的办法比楼下大牛们的方法麻烦10^N^N^N^N倍,我不是大牛,没有那么敏锐的洞察力,根本没往黄金分割上想,然而楼下这么多同志们非得要个证明,我自以为我的办法还是说得通的。
拿到这个题时,还是下意识的找规律,从1开始往后写:
G(1)=1 G(2)=1 G(3)=2 G(4)=3 G(5)=3 G(6)=4 G(7)=4 G(8)=5 G(9)=6 G(10)=6 G(11)=7 G(12)=8 G(13)=8 G(14)=9 G(15)=9 G(16)=10 G(17)=11 G(18)=11 G(19)=12 G(20)=12 G(21)=13 G(22)=14 G(23)=14 G(24)=15 G(25)=16 G(26)=16 G(27)=17 G(28)=17 G(29)=18 G(30)=19……
写到30了,确切的规律还是没有显现,只是有两点:1、自变量总不小于函数值 2、函数值经常出现重复,而且重复的次数从不超过两次,而且随着自变量的增大,重复次数也没有超过两次的趋势。我想,必然是什么束缚住了重复次数。
转而考虑重复次数,
函数值的重复次数数列是:
2 1 2 2 1 2 1 2 2 1 2 2 1 2 1 2 2 1……
自变量与函数值差值的重复次数,从1开始往后,差值依次是:
0 1 1 1 2 2 3 3 3 4 4 4 5 5 6 6 6 7 7 8 8 8 9 9 9 10 10 11 11 11……
貌似还是没有任何规律,下面将上述数列转化成每个差值的重复次数(为方便起见,剔除0):
3 2 3 3 2 3 2 3 3 2 3……
莫非这个“3 2 3 3 2”就是循环节?那来的也太唐突了,并且我又往后写了几个,发现,数列实际上是:3 2 3 3 2 3 2 3 3 2 3 3 2 3 2 3 3 2 3 2 3……
到了后面规律又没了。。。
转而考虑,为什么这个差值重复次数数列里只有2和3?而且他们的连接方式也很特殊:可以有23、32和33,但却没有22。 而且比较一下这个差值重复次数数列和上面的函数值重复次数数列,发现每一项都固定的相差1。
回到原递推式上:每一个G(n)都与G(n-1)和G(G(n-1))有关,所以数列前面的取值对后面的取值毫无疑问是有影响的。当自变量增加1,差值也增加1时,函数值是不变的,这就使函数值出现了重复。因此,差值数列的项每往前推进一项,函数值就要重复一次。例如:
G(4)=3 差1
G(5)=3 差2
此时函数值出现重复;
而
G(7)=4 差3
G(8)=5 差3
G(9)=6 差3
此时函数值不出现重复;
同样的,当函数值不变,自变量增加,差值的重复次数便会出现2;当函数值改变,自变量增加,插值的重复次数便会出现3。
把这二者综合起来,就得到了差值重复数列本身前面对后面的影响,即:
对于32,后面一定会出现23;
对于232,后面一定会出现323;
对于2332,后面一定会出现32323;
…………
举个更具体的例子:如果前面的数列是:3 2 3 3 2
那么它往下扩充应该是:3 2 3 3 2 3 3 2 3 2 3
依据这个规则,开始扩充如下(依然省去"1",不然有损和谐):
3
3 2
3 2 3
3 2 3 3 2
3 2 3 3 2 3 2 3
3 2 3 3 2 3 2 3 3 2 3 3 2
3 2 3 3 2 3 2 3 3 2 3 3 2 3 2 3 3 2 3 2 3
注意看从第4行开始每行比上一行多的部分,发现什么没有?
每一行的最后都是上一行的最后连接上再上一行的最后(32332实际上是323连上32),这不得不让人想到一个非常类似的数列:Fibonacci,简直太像了……
这还不算完,再看看每一行多出来的部分的数字的和:2 3 5 8 13 21……
又是Fibonacci……
还有,再看看每一行多出来的部分的长度:1 1 2 3 5 8……
还是Fibonacci……
这么多Fibonacci都藏在这里面,藏得太深了……
一切就明了了,差值重复数列的数字和与自变量n有关;差值重复数列的长度与n所对应的差值有关,关系就是Fibonacci,根据这个,把这种关系在程序中还原出来,用自变量n减去对应的差值,就是我们梦寐以求的函数值了!
我不知道我的解法与大牛们的公式有什么内在联系,与黄金分割有什么内在联系,但可以保证,这种解法一遍AC。
但由于这个规律找起来很麻烦,所以还原到程序里也很麻烦。所以,建议没耐心者勿用,头脑不清醒者勿用……
诸位晕了吗?如果没有的话,算我没达到目的…………
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-08-27 11:47:56@
F(n)=(1/sqrt(5))×((1+sqrt(5))/2)^n+((1-sqrt(5))/2)^n)
-
02007-11-13 22:58:03@
哪位大牛提供一下证明???????????????
小弟不盛感激 -
02007-11-07 23:06:27@
靠 诸位 AC之后要证明 我无语!
-
02007-10-12 20:00:25@
有人用正常的方法做出来的吗?
不用找规律 -
02007-09-25 23:08:10@
谁给我补补数学啊
这个0.618...是怎么回事啊? -
02007-08-22 20:38:42@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案错误...
├ Hint: Hey buddy~~~ ├ 标准行输出
├ 错误行输出
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:99 有效耗时:0ms
爽!! Hey Buddy!!!! -
02007-08-17 15:26:18@
特征方程吧..
-
02007-08-14 13:44:16@
fibonacci...?!
怎么看出它和圆环函数的关系的? -
02007-08-02 23:09:20@
Program AAA;
Const
v = (sqrt(5) - 1) / 2;Var
n, total: qword;Begin
readln(n);
total := trunc((n + 1) * v);
writeln(total);
End.
为什么啊???
请大牛证明一下!! -
02007-08-02 17:39:13@
哪位大牛给个证明啊!!!
-
02007-07-26 19:48:02@
program ex1178;
var n,ans:qword;
hj:real;
begin
readln(n);
hj:=(sqrt(5)-1)/2;
ans:=trunc((n+1)*hj);
writeln(ans);
end.还是不解...
有大牛讲下吗? -
02007-07-18 22:43:33@
黄金比例+Qword
过了100题庆祝一下! -
02007-03-01 21:09:56@
最好用long long和double
-
02006-11-09 19:58:17@
神奇呀!!!!!!!————————————0。618