1073 Scientific Notation (20 分)【难度: 一般 / 知识点: 字符串 模拟】
2023-09-11 14:15:52 时间
https://pintia.cn/problem-sets/994805342720868352/problems/994805395707510784
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
string s; cin>>s;
if(s[0]=='-') cout<<"-";
s=s.substr(1);
if(s.find('-')!=-1)//左移
{
string ans;
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9') ans+=s[i];
if(s[i]=='E') break;
}
int len=stoi(s.substr(s.find('-')+1));
if(len==0)
{
for(int i=0;i<s.size();i++)
{
if(s[i]=='E') break;
cout<<s[i];
}
}else
{
cout<<"0.";
for(int i=1;i<=len-1;i++) cout<<"0";
cout<<ans;
}
}
else//右移
{
int len=stoi(s.substr(s.find('+')+1));//移动几位
string ans;//存一下有效的数字
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9') ans+=s[i];
if(s[i]=='E') break;
}
string ss; ss+=ans[0];
for(int i=1;i<ans.size();i++)
{
len--,ss+=ans[i];
if(len==0&&i+1!=ans.size())//如果后面还有数
{
ss+='.';
ss+=ans.substr(i+1);
break;
}
}
while(len) ss+="0",len--;
while(ss[0]=='0'&&ss.size()>1) ss=ss.substr(1);
cout<<ss;
}
return 0;
}