偷个懒,转自hzwer
【“这种煞笔题怎么总有人问”,被吧主D了。。。
用f[i]表示已经拥有了i张邮票,则期望还需要购买的邮票数
则f[n]=0
f[i]=f[i]*(i/n)+f[i+1]*((n-i)/n)+1
整理得f[i]=f[i+1]+n/(n-i);
设g[i]为还需要的钱
g[i]=((n-i)/n)*(g[i+1]+f[i+1])+(i/n)*(g[i]+f[i])+1
因为可以视为这张票是1元买的,而后面的每张票都贵了1元
所以要加上f[i+1]或f[i]
然后化简得g[i]=g[i+1]+f[i+1]+((n*i)/((n-i)*n))*f[i]+(n/(n-i))】
感觉自己的智商都不足以应付煞笔题了
var f,g:array[..] of double;
i,n:longint; begin
readln(n);
for i:=n- downto do
f[i]:=f[i+]+n/(n-i);
for i:=n- downto do
g[i]:=g[i+]+f[i+]+i/(n-i)*f[i]+n/(n-i);
writeln(g[]::);
end.