• 1073 Scientific Notation (20 分)


    Scientific notation is the way that scientists easily handle very large numbers or very small numbers. The notation matches the regular expression [+-][1-9].[0-9]+E[+-][0-9]+ which means that the integer portion has exactly one digit, there is at least one digit in the fractional portion, and the number and its exponent's signs are always provided even when they are positive.

    Now given a real number A in scientific notation, you are supposed to print A in the conventional notation while keeping all the significant figures.

    Input Specification:

    Each input contains one test case. For each case, there is one line containing the real number A in scientific notation. The number is no more than 9999 bytes in length and the exponent's absolute value is no more than 9999.

    Output Specification:

    For each test case, print in one line the input number A in the conventional notation, with all the significant figures kept, including trailing zeros.

    Sample Input 1:

    +1.23400E-03
     

    Sample Output 1:

    0.00123400
     

    Sample Input 2:

    -1.2E+10
     

    Sample Output 2:

    -12000000000

    本题难点在于确定小数点位置

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=100010;
    int main(){
        string st;
        cin>>st;
        int len=st.length();
        if(st[0]=='-'){
            printf("-");
        }
        int pos=0;
        while(st[pos]!='E'){
            pos++;
        }
        int sum=0;
        for(int i=pos+2;i<len;i++){
            sum=sum*10+(st[i]-'0');
        }
        if(st[pos+1]=='-'){
            printf("0.");
            for(int i=0;i<sum-1;i++){
                printf("0");
            }
            printf("%c",st[1]);
            for(int i=3;i<pos;i++){
                printf("%c",st[i]);
            }
        }else{
            for(int i=1;i<pos;i++){
                if(st[i]=='.'){
                    continue;
                }
                printf("%c",st[i]);
                if(i==sum+2&&pos-3!=sum){
                    printf(".");
                }
            }
            for(int i=0;i<sum-(pos-3);i++){
                printf("0");
            }
        }
        printf("
    ");
        return 0;
    }


  • 相关阅读:
    细看运维85条军规,是否触动了你内心深处那根弦?
    SQL语句的CRUD
    sqlserver数据库类型对应Java中的数据类型
    Struts2文件上传--多文件上传(插件uploadify)
    web.xml文件详解
    关于Java的散列桶, 以及附上一个案例-重写map集合
    hibernate多表查询封装实体
    spring的7个模块
    Struts标签库详解【3】
    Struts标签库详解【2】
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14469772.html
Copyright © 2020-2023  润新知