代码编织梦想

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;
int main()
{
    string s;   cin >> s;
    int i = 0;
    while(s[i] != 'E')  i++;    //i存储E的位置
    string t = s.substr(1,i-1); //t存储E前面的不含符号的数字
    int n = stoi(s.substr(i+1));//n存储E后面带符号的幂数
    if(s[0] == '-') cout << "-";
    if(n < 0){                  //如果幂数小于0
        cout << "0.";           //因为科学计数法前面的数字<10,故n<0必有“0.”作开头
        for(int j = 0; j < abs(n) - 1; ++j)     cout << '0';//输出中间n-1个0,注意输出单个字符用‘’,多个字符用“”
        for(int j = 0; j < t.length(); ++j)
            if(t[j] != '.') cout << t[j];    //输出幂数小于0时E前面除小数点之外需要输出的数字,避免了0的不输出情况,很好
    }else{
        cout << t[0];           //输出E前面的整数位
        int cnt, j;
        for(j = 2, cnt = 0; j < t.length() && cnt < n; ++j, ++cnt)  cout << t[j];
        //cnt存储幂,然后通过j输出E前面的小数部分
        if(j == t.length()){    //如果幂次大于小数点的位数,即j先结束循环,所以需要输出幂次还未输出的0
            for(int k = 0; k < n - cnt; ++k)    cout << '0';
        } else {                //如果cnt先结束循环,需要先输出小数点,然后继续输出t未输出的部分
            cout << '.';
            for(int k = j; k < t.length(); k++)     cout << t[k];
        }
    }
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/joker_sxj/article/details/127169324

pat 1073 pat 1073. scientific notation (20)-爱代码爱编程

#include<iostream> #include<cstdio> #include<sstream> #include<string> using namespace std; int main() { string str,temp=""; getline(cin,str);

1073. scientific notation (20)-爱代码爱编程

题目链接:http://www.patest.cn/contests/pat-a-practise/1073 题目: Scientific notation is the way that scientists easily handle very large numbers or very small numbers. The n

1073. scientific notation (20)【字符串操作】——pat (advanced level) practise-爱代码爱编程

题目信息 1073. Scientific Notation (20) 时间限制100 ms 内存限制65536 kB 代码长度限制16000 B Scientific notation is the way th

【置顶】【pat】pat甲级题目及分类总结(持续更新ing)_昵称五个字的博客-爱代码爱编程_pat甲级题目

在2019年3月底,我决定考浙大计院,经过一个月还算凑合的学习,痛定思痛,决定整理整理自己的博客。 粗略估计,大概一个月的时间里我AC了31道题,大概用时40个小时上下,毕竟还要把大部分时间花在笔试上。一开始使用Java,到

pat甲级刷题之路——1073-爱代码爱编程

开始刷题——PAT甲级1073 PAT甲级秋季考试落败,为了保研,冲冲冲!!PAT1073 Scientific Notation原题如下题目意思GOGOGO!自己的想法答案反馈代码结语 PAT甲级秋

PAT-A- 1073 Scientific Notation 【科学计数法】-爱代码爱编程

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]+ whic

智乃酱的cube(线段树维护)_一条小小yu的博客-爱代码爱编程

智乃酱有n个cube(立方体),一开始,这些立方体的长宽高均为1,也就是它们的体积都为1×1×1=1,并且这些立方体从1到n排成一排。 接下来智乃酱将要进行m次操作。智乃酱可以将l到r这个区间内所有的立方体某个维度增加a,或者向你询问从l到r中所有立方体的体积之和。 由于这个数字比较大,所以每次查询时你只用输出从l到r中所有立方体的体积之和mod 10^

pat(advanced level)practice-爱代码爱编程

Pat1073代码 题目描述: Scientific notation is the way that scientists easily handle very large numbers or very small numbers. The notation matches the regular expressio