【发布时间】:2016-05-05 17:59:07
【问题描述】:
输入:
x - how many days patient was taking a substance
y - how many miligrams per day
z - what's the half-life of the substance in hours
输出:
a - for how many hours substance will stay in patient's body
(Let's assume that below y/200 threshold we say it's gone).
编辑: 我到目前为止所尝试的我知道是不正确的。就是这样:
public static int computeEliminationTime(int days, double dosage, int half_life) {
double saturation = 0.0d;
double threshold = dosage/200.0d;
boolean isHeStillTakingMedicine = true;
for (int hours = 0;; hours++) {
if (isHeStillTakingMedicine) {
if (hours % 24 == 0) {
saturation += dosage;
days--;
if (days == 0){
isHeStillTakingMedicine = false;
hours=1;
}
}
}
if (hours % half_life == 0) {
saturation /= 2.0d;
}
if (saturation < threshold) {
return hours;
}
}
}
我知道这种方法是错误的,因为物质的消除是一个持续的过程,它不会每隔几个小时的半衰期发生一次。我对exponential decay 进行了一些研究,但我只是不知道如何处理这个怪物。我的数学能力很差。
【问题讨论】:
-
您是否从数学的角度研究过半衰期问题?这个问题的解决方案是微分方程。
-
到目前为止你做了什么?
-
请明确说明
y——这个数量是在每天开始时单次服用的,对吧?另外,a是从服用第一剂剂的那一刻开始计算的,还是从服用最后一次剂的那一刻开始计算的? -
@Dilum y - 在每天开始的时候单身,a - 从最后一剂开始
标签: algorithm