B. Barnicle
这一题比较坑的是小数点后面是0而且e后面也是0的情况。
#include <cstdio>
#include <algorithm>
#include <queue>
#include <stack>
#include <iomanip>
using namespace std;
string x,y,z;
void reserch(string s){
int i = 0,temp = 0;
while(s[i] != '\0'){
if(temp == 0 && s[i] != '.'&& s[i] != '\0'){
x+=s[i];
i++;
}else if(temp == 0 && s[i] == '.'&& s[i] != '\0'){
temp = 1;
i++;
}
if(temp == 1 && s[i] != '\0' && s[i] != 'e'){
y+=s[i];
i++;
}else if(temp == 1 && s[i] == 'e'&& s[i] != '\0'){
temp = 2;
i++;
}
if(temp == 2 && s[i] != '\0'){
z+=s[i];
i++;
}
}
}
int main()
{
string s;
while(cin>>s){
x.clear();y.clear();z.clear();
reserch(s);
long long zz = atoi(z.c_str());
if((zz == 0 )&& (y == "0")){
cout<<x<<endl;
break;
}
if(zz <y.length()){
y.insert(zz,".");
x+=y;
cout<<x<<endl;
}else{
cout<<x;
cout<<setw(zz)<<setfill('0')<<left<<y<<endl;
}
}
return 0;
}