首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

B1073 Scientific Notation(模拟科学计数

2024-12-20 来源:化拓教育网

情况分析

  • 1.23*10^0
  • 1.2310^1
    -1.23
    10^10
    -1.23*10^(-1)
    //这题友好在不用讨论整数部分和指数的情况
#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;
}
显示全文