AcWing 1559. 科学计数法
原题链接
简单
作者:
Value
,
2020-05-31 15:22:47
,
所有人可见
,
阅读 534
#include <iostream>
using namespace std;
int main(){
string s;
getline(cin, s);
if(s[0] == '-') cout << "-";
string integer, decimal;
integer = decimal = "";
int i = 1;
while(s[i] != '.') integer += s[i ++ ];
i ++ ;
while(s[i] != 'E') decimal += s[i ++ ];
i ++ ;
bool flag;
if(s[i ++ ] == '+') flag = true;
else flag = false;
int e = 0;
while(i < s.size()) e = e * 10 + (s[i ++ ] - '0');
if(flag){ // 指数为正,小数点向右移动
cout << integer;
for(i = 0; i < decimal.size() && (i + 1) <= e; i ++ ) cout << decimal[i];
if(i < decimal.size()){
cout << ".";
while(i < decimal.size()) cout << decimal[i ++ ];
}else while((i + 1) <= e) cout << "0", i ++ ; // 小数位不足,补零
}else{ // 指数为负, 小数点向左移动
if(integer.size() > e){
for(i = 0; i < integer.size() - e; i ++ ) cout << integer[i];
cout << ".";
while(i < integer.size()) cout << integer[i ++ ];
for(i = 0; i < decimal.size(); i ++ ) cout << decimal[i];
}else{ // 整数位不足,补零与小数点
cout << "0.";
while(e > integer.size()) cout << "0", e -- ;
for(i = 0; i < integer.size(); i ++ ) cout << integer[i];
for(i = 0; i < decimal.size(); i ++ ) cout << decimal[i];
}
}
return 0;
}