PAT乙级 —— 1014 科学计数法 (20)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级 —— 1014 科学计数法 (20)相关的知识,希望对你有一定的参考价值。


科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[±][1-9]"."[0-9]+E[±][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。

  • 输入描述:

每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。

  • 输出描述:

对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。

  • 输入例子:

+1.23400E-03

  • 输出例子:

0.00123400

  • 满分代码
#include<iostream>
#include<string>
using namespace std;

int main()

string num;
cin>>num;
bool sign = true; //尾数符号
bool signE = true; //指数符号

if(num[0] == -)
sign = false;
if(num[num.find(E)+1] == -)
signE = false;

string value = num.substr(1,num.find(E)-1); //尾数部分
value.erase(1,1); //去掉尾数小数点
string order = num.substr(num.find(E)+2,num.length() - num.find(E)+2); //阶数部分

if(!sign)
cout<<"-";

if(!signE)

cout<<"0.";
for(int i=0;i<stoi(order)-1;i++)
cout<<"0";

else

int len = value.length();
if(len-1 > stoi(order))
value.insert(1+stoi(order),1,.);
else
for(int i=0;i<stoi(order)-len+1;i++)
value += "0";

cout<<value;

return 0;
  • 说明:一个比较麻烦的模拟题,用python写应该会快一点


以上是关于PAT乙级 —— 1014 科学计数法 (20)的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级 1024. 科学计数法 (20)

PAT乙级1024 科学计数法 (20 分)

PAT乙级1024

PAT乙级 1014 福尔摩斯的约会 (20 分)

PAT乙级1014.福尔摩斯的约会 (20)(20 分)

PAT乙级1014 福尔摩斯的约会 (20 分)模拟 / 很坑