http://codeforces.com/problemset/problem/691/C
给定一个长度为N的数字,转化为 标准的科学计数法形式。
N最大可达1e6。
要考虑前置0 和 后置 0 的特殊情况。
当指数为0 的时候,不输出指数部分。
x=0;
x∈(0,1),这种情况下指数部分为-1;
x 为整数,这种情况主要是处理不存在小数点的情况,其他情况输入都肯定包含小数点的;
x∈(1, 10),这种情况不用输出指数部分。
x > 10。
#include <bits/stdc++.h>
using namespace std;
string s;
int ex;
int main(){
cin >> s;
int n=s.length();
int point=n;
for (int i=0;i<n;i++){
if (s[i]=='.'){
point=i;
}
}
int l=0,r=n-1;
while (l<n&&(s[l]=='0'||s[l]=='.')){
l++;
}
while (r>=0&&(s[r]=='0'||s[r]=='.')){
r--;
}
if (l<=point) ex=point-l-1;
else ex=point-l;
cout << s[l];
if (l!=r) cout << ".";
for (int i=l+1;i<=r;i++){
if (s[i]!='.') cout << s[i];
}
if (ex) cout << "E" << ex;
}