PTA Scientific Notation(20ポイント)

無限の光を放つのは人間の心であり、無限の闇を生み出すのも人間の心であり、光と闇が絡み合って戦うこの世界は、懐かしくて無力な世界です。

科学表記は、科学者が非常に大きな数または非常に小さな数を簡単に処理する方法です。表記は、正規表現[+-] [1-9] .[0-9] + E [+-] [0-9] +と一致します。これは、整数部分が正確に1桁であり、少なくとも1桁が小数部分、および数値とその指数の符号は、それらが正の場合でも常に提供されます。

科学表記法で実数Aが与えられた場合、すべての有効数字を保持しながら、従来の表記法でAを印刷する必要があります。

入力仕様:

各入力には1つのテストケースが含まれます。いずれの場合も、科学表記法で実数Aを含む行が1行あります。数値の長さは9999バイト以下で、指数の絶対値は9999バイト以下です。

出力仕様:

各テストケースについて、従来の表記法で入力番号Aを1行に出力し、末尾のゼロを含むすべての有効数字を保持します。

入力例1:

+1.23400E-03

出力例1:

0.00123400

入力例2:

-1.2E+10

出力例2:

-12000000000
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=3e5+10;
vector<char> jg;
char t;
int fh,op[2],fg=1,in,tt;
int main(){
    while((t=getchar())!='\n'){
        if(t=='+'||t=='-')
            op[in++]=t;
        else if(t=='.')
            continue;
        else if(t=='E')
            fg=0;
        else{
            if(fg)
                jg.push_back(t);
            else
                fh=fh*10+t-'0';
        }
    }
    if(op[1]=='-')
        fh*=-1;
    tt=fh+1;
    if(tt<=0){
        while(tt++)
            jg.insert(jg.begin(), '0');
        jg.insert(jg.begin(), '.');
        jg.insert(jg.begin(), '0');
    }
    else{
        if(tt<jg.size())
            jg.insert(jg.begin()+tt, '.');
        else
            while(tt-jg.size())
                jg.push_back('0');
    }
    if(op[0]=='-')
        printf("-");
    for(int i=0; i<jg.size(); i++)
        printf("%c", jg[i]);
    printf("\n");
    return 0;
}

 

おすすめ

転載: blog.csdn.net/weixin_44170305/article/details/108401957