正则表达式的暴力写法
分割E前面和后面的部分 逐步交换 最后控制输出格式
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
string s;
int main(){
cin>>s;
if(s[0]=='-'){
cout<<s[0];
}
s=s.substr(1,s.length()-1);
string s1=regex_replace(s,regex(R"(.*E)"),"");
string s2=regex_replace(s,regex(R"(E.*)"),"");
s=s2;
int n=stoi(s1);
if(n>0){
int loc=0;
while(s[loc]!='.')loc++;
for(int i=0;i<n;i++){
if(loc==s.size()-1){
s+="0";
}
swap(s[loc],s[loc+1]);
loc++;
}
if(s[s.size()-1]=='.')cout<<s.substr(0,s.size()-1);
else cout<<s;
}
else {
int loc=0;
while(s[loc]!='.')loc++;
for(int i=0;i<n*(-1);i++){
if(loc==0){
cout<<"0.";
for(int j=0;j<n*(-1)-i;j++)cout<<0;
cout<<s.substr(1,s.length()-1);
return 0;
}
swap(s[loc],s[loc-1]);
loc--;
}
cout<<s;
}
}