➤ Problem Link : 936A. Save Energy!
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define dl long double
int main()
{
ll k,d,t;
dl ans=0;
cin>>k>>d>>t;
if(k%d==0)
cout<<t;
else
{
ll m;
if(d>k)
m=d-k;
else
{
m=k/d;
m++;
// m=ceil(dl(k)/d);
m*=d;
m-=k;
}
dl frac=(dl)k/t;
frac+=(dl)m/(2*t);
// cout<<frac<<endl;
ll n=floor(1/frac);
dl rem=1-n*(frac);
ans+=n*(k+m);
// cout<<n<<" "<<ans<<endl;
if(rem==0)
{
cout<<ans;
exit(0);
}
dl x=t*rem;
// cout<<x<<endl;
if(x<=k)
ans+=x;
else
{
// cout<<rem<<endl;
rem-=(dl)k/t;
// cout<<rem<<endl;
ans+=k;
// cout<<ans<<endl;
// cout<<rem<<endl;
ans+=rem*2*t;
}
cout<<fixed<<setprecision(10)<<ans;
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
