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 <iostream>
#include <string>
#include <cstring>
using namespace std;
int main() {
    string s;
    cin >> s;
    if(s[0] == '-')
        cout << "-";
    int n,i;
    for(i = 1; s[i] != 'E'; i++);
    string t = s.substr(1,i-1);
    n = stoi(s.substr(i+1));
    if(n < 0)
    {
        cout << "0.";
        for(int j = 0; j < abs(n)-1; j++)
            cout << "0";
        for(int j = 0; j < t.length(); j++)
        {
            if(t[j] != '.')
                cout << t[j];
        }
    }
    else{
        if(n >= t.length()-2)
        {
            for(int j = 0; j < t.length(); j++)
            {
                if( t[j] != '.')
                    cout << t[j];
            }
            for(int j=0 ;j < n-t.length()+2; j++)
            {
                cout << "0";
            }
        }
        else{
         for(int j = 0; j<n+2; j++)
         {
             if(t[j] != '.')
                 cout << t[j];
         }
         cout << ".";
         for(int j= n+2; j < t.length(); j++)
            cout << t[j];
        }
    }
    return 0;
}

柳婼的解法:

#include <iostream>
using namespace std;
int main() {
 string s;
 cin >> s;
 int i = 0;
 while (s[i] != 'E') i++;
 string t = s.substr(1, i-1);
 int n = stoi(s.substr(i+1));
 if (s[0] == '-') cout << "-";
 if (n < 0) {
        cout << "0.";
         for (int j = 0; j < abs(n) - 1; j++) cout << '0';
         for (int j = 0; j < t.length(); j++)
         if (t[j] != '.') cout << t[j];
 }
 else {
        cout << t[0];
         int cnt, j;
         for (j = 2, cnt = 0; j < t.length() && cnt < n; j++, cnt++) cout <<
t[j];
        if (j == t.length()) {
                for (int k = 0; k < n - cnt; k++) cout << '0';
        }
        else {
                cout << '.';
                 for (int k = j; k < t.length(); k++) cout << t[k];
        }
 }
 return 0;
}

PAT甲级——1073 Scientific Notation (20分)的更多相关文章

  1. PAT 甲级 1073 Scientific Notation (20 分) (根据科学计数法写出数)

    1073 Scientific Notation (20 分)   Scientific notation is the way that scientists easily handle very ...

  2. PAT Advanced 1073 Scientific Notation (20 分)

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  3. PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  4. 【PAT甲级】1073 Scientific Notation (20 分)

    题意: 输入科学计数法输出它表示的数字. AAAAAccepted code: #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> u ...

  5. PAT 甲级 1035 Password (20 分)

    1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...

  6. 1073. Scientific Notation (20)

    题目如下: Scientific notation is the way that scientists easily handle very large numbers or very small ...

  7. PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)

    1050 String Subtraction (20 分)   Given two strings S​1​​ and S​2​​, S=S​1​​−S​2​​ is defined to be t ...

  8. PAT 甲级 1046 Shortest Distance (20 分)(前缀和,想了一会儿)

    1046 Shortest Distance (20 分)   The task is really simple: given N exits on a highway which forms a ...

  9. PAT 甲级 1042 Shuffling Machine (20 分)(简单题)

    1042 Shuffling Machine (20 分)   Shuffling is a procedure used to randomize a deck of playing cards. ...

随机推荐

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-volume-down

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  3. chrome浏览器安装vue调试器vue-devtools

    chrome浏览器安装vue调试器vue-devtools https://blog.csdn.net/zhangjnwei/article/details/76693053

  4. assert和hasattr,getattr,setattr

    assert hasattr(self, 'initial_data'), ( 'Cannot call `.is_valid()` as no `data=` keyword argument wa ...

  5. [ACTF2020 新生赛]Upload

    0x00 知识点 emm常规上传题目 之前写的文件上传文章: https://www.cnblogs.com/wangtanzhi/p/12243206.html 0x01 解题 简单测试一下就get ...

  6. 1. react 简书 项目初始化

    1. 创建 react 项目 npx create-react-app my-app 2. src 目录下删除 除了 index.js index.css app.js 的文件 3. 引入 style ...

  7. npm、yarn 简单使用记录

    npm.yarn常用命令记录,后续会陆续补充... 经过使用发现yarn再下包是速度快,所以日常以yarn指令应用为主 npm查看仓库地址:npm config get registrynpm设置淘宝 ...

  8. 如何做好Essay Proofreading?

    终于写完了一篇Essay,瞬间感觉人生轻松了好多!别急,想要Essay最终得到高分,你还需要最后一步:论文润色! 换句话说,就是我们需要写完的Essay进行检查校对.那么我们一般需要校对的部分有哪些呢 ...

  9. jQuery课上笔记19.5.17

    jQuery 选择器 $("*"):所有元素 $("#idname"):id="idname"的元素 $(".classname& ...

  10. (6)Mat对象的一些函数和方法的使用

    首先是基本的代码整理 #include<iostream> #include<opencv.hpp> using namespace std; using namespace ...