1024 科学计数法 (20)(20 分)

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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

作者: HOU, Qiming

单位: PAT联盟

时间限制: 100ms

内存限制: 64MB

代码长度限制: 16KB

PS:

注意:1、由于数字可能很大,所以不能使用double类型,只能通过字符串输出(否则后2个测试点无法通过)。

           2、补0需要同时注意:(1)、小数部分  (2)、整数部分。

           3、输出只需要按普通数字:正数无符号。

           4、正则表达式可以去学一下,用处很大。

推荐测试样例:

+0.1E-1
-0.01E+9999
-0.01E+2
-0.012E+2
#include <iostream>
#include <string>
#include<string.h>
using namespace std;
int main(){
string a, res;
cin >> a;
int k = 0;
char ch = a[0];
int flag = 0;
while (a[k] != 'E') { //记录有效数字
if (strchr("+0.-", a[k]) == NULL)
flag = 1;
if (isdigit(a[k]) && flag)
res += a[k];
k++;
}
int l = a.substr(a.find('.'), a.find('E')).length() - 3; //记录小数位数
int c = stoi(a.substr(a.find('E') + 1, a.length())); //记录指数
k = c - l;
if (k < 0) {
while (res.length() < abs(k)) //小数位补0
res = '0' + res;
res.insert(res.end() + k, '.'); //插入小数点
if (res[0] == '.') //若是小数之前还需补0
res = '0' + res;
}
else {
while (k--) //整数末尾补0
res += '0';
}
if (ch == '-') //如果是负数还需补负号,切记正数不用
res = ch + res;
cout << res;
return 0;
}

PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)的更多相关文章

  1. PAT 1024. 科学计数法 (20)

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

  2. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)

    PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...

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

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  4. PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

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

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

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

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

  7. PAT——1024. 科学计数法

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

  8. 1024 科学计数法 (20 分)C与Java

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

  9. PAT 1024 科学计数法

    https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168 科学计数法是科学家用来表示很大或很小的数字的 ...

随机推荐

  1. spring boot 中使用filter

  2. How to fix the bug “Expected "required", "optional", or "repeated".”?

    参考:https://github.com/tensorflow/models/issues/1834 You need to download protoc version 3.3 (already ...

  3. 搭建GitLab+Jenkins

    1. Jenkins and GitLab Jenkins是一个自动化服务器,可以运行各种自动化构建.测试或部署任务. GitLab是一个代码仓库,用来管理代码. 两者结合起来,就可以实现开发者提交代 ...

  4. redis 配置参数

    redis配置参数说明: 属性 说明 daemonize 如果值是“yes”,则启动服务的时候是后台守护进程形式,如果值是“no”,则相反 pidfile 指定存储Redis进程号的文件路径 port ...

  5. Feign 注意事项

    一.FeignClient注解 FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上 1 2 3 4 5 @FeignC ...

  6. dropload插件的使用(上拉下滑加载数据)

    .导入 js dropload.min. js zepto.min.js  <!-- jQuery1.7以上 或者 Zepto 二选一,不要同时都引用 --> $(function(){ ...

  7. polyfill

    [polyfill] 在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别? 一个shim是一个库,它将一个新的API引入到一个旧的环境中,而 ...

  8. .net 代理类(WebService代理类的详解 )

    http://hi.baidu.com/654085966/item/53ee8c0f108ad78202ce1b1d   -----------转自 客户端调用Web Service的方式我现在知道 ...

  9. 每月IT摘录201810

    技术 1.Redis.对于单机实例,我们采用原生主从(Master-Slave)模式实现高可用,常规模式下对外仅暴露 Master 节点.由于使用原生 Redis,所以单机实例支持所有 Redis 指 ...

  10. 六 json&pickle模块

    之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了 ...