/*
找出循环节长度,然后处理尾部数据
(ll) double / double
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll k,d;
double t;
cin>>k>>d>>t;
if(k%d == 0){
printf("%.1lf",t);
}else{
ll rlen; // 循环长度
double rw; // 循环长度消去的时间
if(k>d){
rlen = k + (d*(k/d+1) - k);
rw = k*1.0 + (d*(k/d+1) - k) * 0.5;
}else{
rlen = d;
rw = k*1.0 + (d - k) *0.5;
}
ll total = t;
ll ans = (ll)(t/rw) * rlen;
double st = total - (ll)(t/rw) * rw;
if(st <= k){
printf("%.1lf",ans + st);
}else{
printf("%.1lf",ans + k + (st - k) * 2);
}
}
}
兔兔煮鱼(数学问题)
最新推荐文章于 2024-07-25 21:13:04 发布