PAT 1024 科学记数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。
输入格式:
每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。
输出格式:
对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。
输入样例 1:
+1.23400E-03
输出样例 1:
0.00123400
输入样例 2:
-1.2E+10
输出样例 2:
-12000000000
思路: 对字符串进行处理并按照普通数字表示法输出该数。输出的数从左向右看,第一个要输出的是数的符号,即如果输入的数为负数要加负号,正数不做处理;然后是数字部分,这里要看E后面的符合,及科学计数法是乘10的正数次方还是负数次方,如果是负数次方则可能输出一个0.***的数,而如果是正数次方可能要在后面补零也可能是在数中间加小数点。具体情况看代码。代码如下:
#include <bits/stdc++.h>
#define LL long long
using namespace std;
int main()
{
string a;
cin>>a;
string b;//用字符串b存储数字部分,因为科学计数法的特性不会出现前导0的情况
if(a[0]=='-')printf("-");//对于负数,输出负号
int len=a.length();
int len0=0;//要补零或者填几个0,即科学记数法是多少E
int x=0;
for(int i=1;i<len;i++){
if(a[i]!='+'&&a[i]!='-'&&a[i]!='E'&&a[i]!='.')b+=a[i];//获取数字部分
if(a[i]=='E'){
x=i;//获取E在字符串中的位置
break;
}
}
stringstream ss;//利用流来及substr函数返回E后面的数字串,即10的多少次方,我们对科学计数法的数字进行移位操作时就是根据这个数字来的
ss<<a.substr(x+2,len-x-1);
ss>>len0;
if(a[x+1]=='+'){//补零的情况
if(len0>=b.length())len0++;//如果要补零,就要++,科学计数法小数点前有一位数了已经
for(int i=0;i<b.length();i++,len0--){
cout<<b[i];
if(len0==0&&i!=b.length()-1)printf(".");//如果数字长度比补零的位数大,则应该补小数点
}
for(int k=0;k<len0;k++)printf("0");
}
else{//小数补前导零,去掉原有的小数点前的一位即可
printf("0.");
for(int k=0;k<len0-1;k++)printf("0");
cout<<b;
}
return 0;
}
PAT 1024 科学记数法的更多相关文章
- PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)
1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...
- 浙大 pat 1024题解
1024. Palindromic Number (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A ...
- PAT——1024. 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...
- PAT 1024. 科学计数法 (20)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...
- PAT 1024 Palindromic Number[难]
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- PAT 1024 科学计数法
https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168 科学计数法是科学家用来表示很大或很小的数字的 ...
- PAT 1024 Palindromic Number
#include <cstdio> #include <iostream> #include <cstdlib> #include <algorithm> ...
- C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...
- PAT 1073 Scientific Notation[字符串处理][科学记数法]
1073 Scientific Notation(20 分) Scientific notation is the way that scientists easily handle very lar ...
随机推荐
- 关于宝塔一个站点绑定多个域名宝塔ssl证书的问题
目前“宝塔SSL”自动申请绑定一个证书,即根域名和www域名,如果还需要绑定手机端m则需要绑定多个域名如果多域名绑定一个网站数据,需要新建多个站点指向同一文件目录. 用相同的方法,在不新建站点的前提下 ...
- qt需求
1.登录框 账号密码 复杂度判断 2.监控 权限认证 (5分钟必须锁定,退回登录状态)--b/s 3.exe 嵌入exe (什么时间触发了什么消息,任何消息触发都可以,日志文件zlog,5分钟没有写 ...
- 唐敬博-201871010118 《面向对象程序设计(java)》第七周学习总结
在博客园撰写博客(随笔),总结7周实验内容,作业格式要求如下: 博文名称:学号-姓名<面向对象程序设计(java)>第七周学习总结(1分) 博文正文开头格式:(2分) 项目 内容 这个作业 ...
- pugixml 读取
xml <?xml version="1.0" encoding="utf-8" ?> <ROOT> <COMPANY>Te ...
- Zookeeper注册中心搭建-单机版(三)
Zookeeper是一个分布式协调组件,本质是一个软件. Zookeeper常用的功能有: 发布订阅功能,把 zookeeper 当作注册中心的原因. 分布式/集群管理功能 Zookeeper是Jav ...
- 5 Ways AI is Transforming the Finance Industry
https://marutitech.com/ways-ai-transforming-finance/ As global technology has evolved over the years ...
- DES介绍
DES对称加密算法中的一种.是一个分组加密算法. 密钥长64位.(密钥事实上是56位参与DES运算(第8.16.24.32.40.48.56.64位是校验位)56 位 8位奇偶校验位. DES算 ...
- React的一些原则
做React的一些原则, ① 我的交互,总是改变的是数据,而不是视图,视图是React来负责更新的,数据驱动开发,我永远都在改数据而不是控制视图 这个图的做法是先获取list数据,再等用户点击 查看详 ...
- CF1175E Minimal Segment Cover
题目链接 题意 给出n条线段.m次询问,每次询问给出一个区间\([l,r]\)问最少需要多少条线段才能覆盖区间\([l,r]\). 所有坐标\(\le 5\times 10^5\).\(n,m\le ...
- ES5.1下的作用域链
作用域链(ES5.1规格视角) javascript作用域类型 javascript采用的是词法作用域(静态作用域) 与之相对的是动态作用域,以下的例子可以很好地说明 let a = 3 functi ...