#include <iostream>
#include <string>
#include <cmath>
std::string toScientificManual(int n) {
if (n == 0) return "0e+0";
int exponent = 0;
double mantissa = n;
while (std::abs(mantissa) >= 10.0) {
mantissa /= 10.0;
exponent++;
}
while (std::abs(mantissa) < 1.0) {
mantissa *= 10.0;
exponent--;
}
char buffer[64];
std::sprintf(buffer, "%.6fe%+d", mantissa, exponent);
return buffer;
}
int main() {
int x = 123456789;
std::cout << toScientificManual(x);
}
/*
run:
1.234568e+8
*/