PAT

B1073 Scientific Notation(模拟科学计数

2020-01-21  本文已影响0人  Tsukinousag

B1073 Scientific Notation (20分)

情况分析

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string.h>
#include <cmath>
#include <math.h>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <stack>
using namespace std;
typedef long long ll;
const int MAX=1005;
const int INF=0x3f3f3f3f;
const int mod=1000000007;
int main()
{
    int flag;
    string s,temp;
    cin>>s;
    if(s[0]=='-')
    {
        cout<<"-";
    }
    s.erase(s.begin());
    int i=0;
    while(s[i]!='E')
    {
        if(s[i]=='.')
        {
            flag=i;
            i++;
            continue;
        }
       temp+=s[i];
       i++;
    }
    i++;
    int sum=0;
    for(int k=i+1;k<s.size();k++)
    {
        sum=sum*10+s[k]-'0';
    }
    if(sum==0)
    {
        cout<<temp[0]<<"."<<temp.substr(1,temp.size()-1);
    }
    else
    {
    if(s[i]=='-')//小数点前只有一位数
    {
        string res="0.";
        for(int k=0;k<sum-1;k++)
        {
            res+='0';
        }
        res+=temp;
        cout<<res;
    }
    else//'+',小数点后i-2-flag位
    {
        if(sum-(i-2-flag)>=0)
        {
        for(int k=0;k<sum-(i-2-flag);k++)
        {
            temp+='0';
        }
        cout<<temp;
        }
        else
        {
            cout<<temp.substr(0,1+sum)<<"."<<temp.substr(1+sum,(i-2-flag)-sum);
        }
    }
    }
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读