题目描述
blablabla
样例
#include<iostream>
#include<string>
using namespace std;
int main() {
string str;
cin >> str;
// 对于“-”号特殊处理
if (str[0] == '-') cout << '-';
// 抠出前面 部分 如何 123400
auto k = str.find('E');
// 去除小数点
string a = str[1] + str.substr(3, k - 3);//由于是不包括k自己本身, 所以不是k-2而是k-3
// 抠出最后的位数以后
int b = stoi(str.substr(k + 1));
// 因为
b++;
// 对结果进行格式化, b <= 加前置零, 小数点需要添加的地方, 刚好b=0 的情况下依然需要添加前导零
if (b <= 0) a = "0." + string(-b, '0') + a;
else // b >= 0
{
// 添加后置零, 需要添加后置零的情况
if (b >= a.size()) a = a + string(b - a.size(), '0');
else // b > 0 && 位数刚好在 a的size里面,需要在中间添加小数点
{
a = a.substr(0, b) + '.' + a.substr(b );
}
}
// 还有一种情况, 需要添加小数点在中间的
cout << a << endl;
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla