Problem C: 十二指肠钩口线虫
Description
十二指肠钩口线虫是寄生于人体肠道内的一种钩虫,这种钩虫咬附在肠壁上吸取血液,对人体危害很大。其危害之处在于:
1.吸血速度极快。吸进去的血并不消化而直接排出。
2.经常更换咬附部位,造成肠壁上留下许多伤口。
3.分泌抗凝素,使伤口很长时间内不能愈合,不断渗血。
因此,感染了这种钩虫的病人常由于肠道内大量出血而出现继发性贫血症状。
假设钩虫的吸血速度是恒定的,更换咬附部位的频率也是恒定的,每个伤口的渗血速度和渗血时间也是恒定的。如果一个病人感染了一条钩虫,那么从他感染时起到某一指定时间,他的总失血量是多少呢?
Input
多组测试数据。每组一行,5个整数:S、V、T、M、E,之间以空格隔开。
S:钩虫每单位时间内的吸血量。0<S<=1000。
V:钩虫离开后,每个伤口单位时间内的渗血量。0<V<=1000。
T:钩虫每隔多长时间更换一次咬附部位。0<T<=1000。
M:伤口在钩虫离开多长时间后停止渗血。0<M<=1000。
E:自感染钩虫时起到现在过了多长时间。0<E<=1000000。
Output
每组测试数据输出一行。自感染钩虫时起到现在的总失血量。
Sample Input
9 1 3 11 23
7
2 8 3 58
10
3 3 20 16
1000 100 1000 1000 10000
1000 100 1 1000 10000
Sample Output
266
446
265
10900000
959950000
#include<stdio.h>
int main()
{
freopen("in","r",stdin);
int S,V,T,M;
long E;
while(scanf("%d%d%d%d%ld",&S,&V,&T,&M,&E)!=EOF){
double total = 0;
int c_a;//伤口数
int l_t;//最后一次吸血伤口的时间
int i;
c_a = E/T;//最后一次之前的伤口数
l_t = E%T;//最后一次吸血的时间
total += E*S;//在整个E时间里,有且只有一个伤口被吸血
for(i=1;i<=c_a;i++){
if(E-i*T>M) total += M*V;//E-i*T>M 说明伤口会渗血时间可以达到M
else total += (E-i*T)*V;//伤口渗血时间小于M,只有(E-i*T)
}
printf("%.0lf\n",total);
}
return 0;
}