func_code_string: #include <bits/stdc++.h>   using namespace std;   long long MOD = 1e9 + 7;   const long double E = 1e-7;   unsigned char ccc;   bool _minus = false;   template <typename T>   inline T sqr(T t) {     return (t * t);   }   inline void read(long long &n) {     n = 0;     _minus = false;     while (true) {       ccc = getchar();       if (ccc ==     || ccc ==   n ) break;       if (ccc ==  - ) {         _minus = true;         continue;       }       n = n * 10 + ccc -  0 ;     }     if (_minus) n *= -1;   }   inline void read(int &n) {     n = 0;     _minus = false;     while (true) {       ccc = getchar();       if (ccc ==     || ccc ==   n ) break;       if (ccc ==  - ) {         _minus = true;         continue;       }       n = n * 10 + ccc -  0 ;     }     if (_minus) n *= -1;   }   char wwww[19];   int kkkk;   inline void write(long long y) {     long long x = y;     kkkk = 0;     if (!x)       ++kkkk, wwww[kkkk] =  0 ;     else       while (x) {         ++kkkk;         wwww[kkkk] = char(x % 10 +  0 );         x /= 10;       }     for (int i = kkkk; i >= 1; --i) putchar(wwww[i]);     putchar(   );   }   long long d, k, a, b, t;   long long get(long long x) {     long long ans = max(0LL, x - 1) * t + x * k * a + (d - x * k) * b;     return ans;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     ;     srand(time(NULL));     cout.precision(10);     cout << fixed;     cin >> d >> k >> a >> b >> t;     long long ans = ((d - 1) / k) * t + d * a;     long long l = 0, r = d / k;     while (l + 10 < r) {       long long l1 = (l + l + r) / 3, r1 = (l + r + r) / 3;       if (get(l1) < get(r1)) {         r = r1;       } else {         l = l1;       }     }     for (long long i = l; i <= r; i++) ans = min(ans, get(i));     cout << ans <<   n ;   }   