PAT乙级 —— 1014 科学计数法 (20)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级 —— 1014 科学计数法 (20)相关的知识,希望对你有一定的参考价值。
- 题目链接:科学计数法 (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)的主要内容,如果未能解决你的问题,请参考以下文章