AcWing 5972. 科学记数法
原题链接
中等
作者:
在月球_0
,
2024-11-03 11:02:44
,
所有人可见
,
阅读 11
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string s;
int a,b;
cin >> s;
a = s[0] - '0';
b = 0;
vector<char> d;
int i = 2;
for(i = 2;i < s.size();i++)
{
if(s[i] == 'e') break;
d.push_back(s[i]);
}
i++;
for(;i < s.size();i++)
{
b = b * 10 + (s[i] - '0');
}
if(a == 0)
{
if(d.size() == 1 && d[0] == '0')
{
cout << '0';
}
else {
cout << a << '.';
for(int j = 0;j < d.size();j++)
{
cout << d[j];
}
}
}
else{
cout << a;
vector<char> ret;
int j = 0;
for(j = 0;j < b && j < d.size();j++)
{
cout << d[j];
}
if(j < d.size())
{
//10的进位结束
ret.push_back('.');
for(;j < d.size();j++)
{
ret.push_back(d[j]);
}
}
else
{
for(;j < b;j++)
{
ret.push_back('0');
}
}
if(b == 0 && ret.size() == 2 && ret[1] == '0')
{
}else {
for(int k = 0;k < ret.size();k++)
{
cout << ret[k];
}
}
}
return 0;
}