随机采矿
题号:NC21167
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

为了不造成混淆, 请明确时刻和时间的区别(拿出初中或高中物理课本中学到的知识).
Jim有一个晶体矿, 在第0时刻有n个SCV来采集矿物, 晶体矿最多能容纳m个SCV,一个单位时间内一个SCV采集晶体矿的效率为k单位晶体
然而控制中心可以花一个单位时间制造一个SCV,在第t个时刻它决定制造一个SCV的概率是
也就是说如果在t时刻开始制造SCV, 在t+1时刻会被制造完成, 另外, 当矿场已经拥有m个SCV时, 将不再制造SCV.
请问他在T单位时间内得到的期望的晶体矿的数量是多少呢?

输入描述:

一行4个整数, n, m, T, k.含义如题目描述所示.

输出描述:

一个浮点数, 表示期望获得晶体矿的数量.
本题采用spj,你的答案被视为正确当且仅当与标准答案的绝对或相对误差小于10-6
这句话的意思是若你的答案为A, 正确答案为B, 则当 |A - B| < 10 ^ 6 或 | ( A - B ) / A | < 10 ^ 6 时你的答案正确, 两个条件只需满足其中一个.
示例1

输入

复制
6 10 1 1

输出

复制
6

说明

第0个时刻它有100%的概率新建一个SCV.
此时6个SCV采了6单位晶体.
第1时刻采集矿物完成,共采集6单位晶体.

备注:

数据范围
- 对于30%的数据, 满足 T <= 106;
- 对于另外10%的数据满足 m = n+1;
- 对于另外10%的数据满足 m = n+2;
- 对于100%的数据, 满足 T  <= 109 , 0 <= n, m <= 20;