﻿PAT(B) 1024. 科学计数法 (20)-Ocrosoft

# 1024. 科学计数法 (20)

100 ms

65536 kB

8000 B

Standard

HOU, Qiming

```+1.23400E-03
```

```0.00123400
```

```-1.2E+10
```

```-12000000000
```
```#include <set>
#include <map>
#include <list>
#include <cmath>
#include <stack>
#include <queue>
#include <ctime>
#include <string>
#include <cstdio>
#include <vector>
#include <cctype>
#include <climits>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <functional>
#define strend string::npos
#define ms(a) memset(a,0,sizeof(a))
#define rep(a,v,b) for(int a=v;a<b;a++)
#define repe(a,v,b) for(int a=v;a<=b;a++)
#define pre(a,v,b) for(int a=v;a>b;a--)
#define pree(a,v,b) for(int a=v;a>=b;a--)
#define lowbit(x) x&-x
typedef long long LL;
const LL LINF = LLONG_MAX / 2;
const int INF = INT_MAX / 2;
const int MAXN = 27 + 10;
const int MOD = 1000000007;
int gcd(int a, int b)
{
if (!b)return a;
return gcd(b, a%b);
}
/*(◕‿‿◕)(◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕)*/
/*(◕‿‿◕) 签订契约,成为马猴烧酒吧 (◕‿‿◕)*/
/*(◕‿‿◕)(◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕)*/
using namespace std;
int main()
{
string s; cin >> s;
string ss;
for (int i = 1; i < s.size(); i++)
{
if (s[i] == '.'||s[i]=='E')continue;
if (s[i] == '+')
{
int ex = 0;
for (int j = i + 1; j < s.size(); j++)
ex = ex * 10 + (s[j] - '0');
if (ex - i + 4 < 0)
{
ss.insert(ss.begin() + 3, '.');
break;
}
for (int j = 0; j < ex-i+4; j++)
ss.push_back('0');
break;
}
if (s[i] == '-')
{
int ex = 0;
for (int j = i + 1; j < s.size(); j++)
ex = ex * 10 + (s[j] - '0');
for (int j = 0; j < ex - 1; j++)
ss.insert(ss.begin(), '0');
ss = "0." + ss;
break;
}
ss.push_back(s[i]);
}
if (s[0] == '+')cout << ss << endl;
else cout << "-" << ss << endl;
return 0;
}```