Notación científica de la PTA (20 puntos)

Es la mente humana la que libera la luz infinita, y también es la mente humana la que crea la oscuridad ilimitada. La luz y la oscuridad se entrelazan y luchan juntas. Este es el mundo por el que estamos nostálgicos y desamparados.

La notación científica es la forma en que los científicos manejan fácilmente números muy grandes o números muy pequeños. La notación coincide con la expresión regular [+ -] [1-9] .[0-9] + E [+ -] [0-9] + lo que significa que la parte entera tiene exactamente un dígito, hay al menos un dígito en la porción fraccionaria y el número y los signos de su exponente siempre se proporcionan incluso cuando son positivos.

Ahora, dado un número real A en notación científica, se supone que debe imprimir A en la notación convencional manteniendo todas las cifras significativas.

Especificación de entrada:

Cada entrada contiene un caso de prueba. Para cada caso, hay una línea que contiene el número real A en notación científica. El número no tiene más de 9999 bytes de longitud y el valor absoluto del exponente no es más de 9999.

Especificación de salida:

Para cada caso de prueba, imprima en una línea el número de entrada A en la notación convencional, manteniendo todas las cifras significativas, incluidos los ceros finales.

Entrada de muestra 1:

+1.23400E-03

Salida de muestra 1:

0.00123400

Entrada de muestra 2:

-1.2E+10

Salida de muestra 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;
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44170305/article/details/108401957
Recomendado
Clasificación