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

这道题其实 百度上大神那可是玩出花样了。可我水平不及。只能用中规中矩的方法,按照我们平时做题一样移项出解。所以代码会长,不过还得真的好好研究一下 百度上的算法才行,不能故步自封也是学习的方法吧!

AC代码:

#include <bits/stdc++.h>
using namespace std;void solve() {vector<int>ZS, XS;int pd = 0;int nt;char f='+';for (char s; s = getchar(), s != 'E';) {if (s == '+' || s == '-')f = s;else if (s != '.') {if (!pd)ZS.push_back(s - '0');elseXS.push_back(s - '0');}elsepd = 1;}scanf("%d", &nt);if (nt < 0) {for (int i = 0, j = -nt; i < j; i++) {if (!ZS.empty()) {XS.insert(XS.begin(), ZS[ZS.size() - 1]);ZS.erase(ZS.begin()+ZS.size()-1);}else {XS.insert(XS.begin(), 0);}}}else if (nt > 0) {for (int i = 0, j = nt; i < j; i++) {if (!XS.empty()) {ZS.insert(ZS.begin() + ZS.size(),XS[0]);XS.erase(XS.begin());}else {ZS.insert(ZS.begin() + ZS.size(), 0);}}}if(f!='+')printf("%c", f);if (ZS.empty() && !XS.empty())  // 如果小数存在且整数不存在printf("0.");else if (!ZS.empty() && !XS.empty()) { // 如果小数整数都存在for (int i = 0, j = ZS.size(); i < j; i++)printf("%d",ZS[i]);printf(".");}else if(!ZS.empty()){ // 不满足 2 则 考虑是不是 整数存在for (int i = 0, j = ZS.size(); i < j; i++)printf("%d",ZS[i]);}else {printf("0"); // 整数小数都不存在就是 0 了}for (int i = 0, j = XS.size(); i < j; i++) {printf("%d", XS[i]);}}int main() {solve();return 0;
}

1024 科学计数法 (20)(20 分)相关推荐

  1. 1024 科学计数法 (20 分

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

  2. 1024 科学计数法 (20 分) 完全解析(C++详细思路)

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

  3. 1024 科学计数法——C/C++实现

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

  4. PAT乙级 1024 科学计数法 python

    题目 1024 科学计数法 分数 20 作者 HOU, Qiming 单位 浙江大学 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[± ...

  5. C++学习之路 | PTA乙级—— 1024 科学计数法 (20 分)(精简)

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

  6. PAT 1024 科学计数法 (20分) C语言实现

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

  7. PTA 1024 科学计数法 (c语言)

    1024 科学计数法 (20 分) 代码如下 #include<string.h> int main(void) {char head,a[10001]= {0};int ex=0;sca ...

  8. PAT乙级 1024. 科学计数法 (C语言)

    1024. 科学计数法 (20) 题目: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即 ...

  9. PAT 1024 科学计数法

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

最新文章

  1. 数据读取与数据扩增方法
  2. ELK出现unassigned_shards查看及删除
  3. rsync 未授权访问漏洞
  4. Sticks UVA - 307(切木棍 线性区间dp,线性dp,区间思想。)
  5. Linux :IO多路复用模型
  6. modelandview为null的原因_一千个不用 Null 的理由!
  7. [转]从根上理解高性能、高并发:深入计算机底层,理解线程与线程池
  8. 傲娇Android二三事之诡诡异异的图片加载
  9. jquery datepicker 显示12个月份
  10. 仿WPS PDF阅读器
  11. 如何阅读PBRT3?
  12. jsonrpc-c编译
  13. 浅谈Http长连接和Keep-Alive以及Tcp的Keepalive
  14. Mobilenet-ssd 目标检测
  15. 串口协议包的接收及解析处理
  16. 项目需求到设计的理解
  17. 相同分数排相同名次C语言,实验六 按成绩输出名次
  18. html学生基本信息表格模板,学生基本信息表excel模板
  19. ubuntu 从刷机到yolov5环境搭建训练记录
  20. php 正则 /is,PHP 正则表达式后面接的/isU, /is, /s含义

热门文章

  1. 大数据技术-数据仓库
  2. 手机社交游戏设计中交互理念的渗透
  3. 数据结构笔记-DAG有向无环图
  4. 计算机基础中office软件的应用研究,OFFICE办公软件在计算机中的运用研究
  5. python新手入门项目推荐_Python新手入门70个练手项目
  6. CPU与I/O设备之间的联系
  7. 更改TabLayout选中的背景色
  8. cppcheck 自定义规则_cppcheck扫描规则
  9. 使用Behavior Designer插件简单制作NPC AI
  10. python iloc函数_pandas入门——loc与iloc函数