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

现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

输入格式:

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

输出格式:

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

输入样例 1:
  1. +1.23400E-03
输出样例 1:
  1. 0.00123400
输入样例 2:
  1. -1.2E+10
输出样例 2:
  1. -12000000000
思路
  • 字符串处理的问题,重点是存储好E前的数字,还有就是要定好指数的大小

  • 一个容易错的点是指数比较小的时候,小数点是不能忽略的,要计算好关系在适当的时候输出小数点,距离+1.23E+00,此时的输出应该为1.23,如果一律按照指数比较大来处理,会有一个测试点TLE

代码
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. char a[10100];
  4. int main()
  5. {
  6. bool negtive = true;
  7. char ch;
  8. int t;
  9. cin >> ch;
  10. if(ch == '+') negtive = false; //定正负
  11. std::vector<char> v; //存放了除了小数点的E前的所有数字
  12. while(cin>>ch)
  13. {
  14. if(ch == 'E')
  15. break;
  16. if(ch != '.')
  17. v.push_back(ch);
  18. }
  19. cin >> ch;
  20. bool exp_neg = false;
  21. if(ch == '-') exp_neg = true;
  22. int exp = 0;
  23. while(cin>>ch)
  24. {
  25. exp = exp * 10 + (ch - '0');
  26. } //得到指数
  27. if(!exp_neg) //如果指数为正
  28. {
  29. if(negtive)
  30. cout << "-";
  31. if(exp > v.size() - 1)
  32. {
  33. for(int i=0;i<v.size();i++)
  34. cout << v[i];
  35. for(int i=0;i<exp-v.size()+1;i++)
  36. cout <<"0"; //指数比较大,可以忽略小数点的情况
  37. }else
  38. {
  39. cout << v[0];
  40. for(int i=1;i<v.size();i++)
  41. {
  42. if(i - 1 == exp)
  43. cout << ".";
  44. cout << v[i];
  45. }
  46. } //比如1.21E+00,此时指数尚不能大得忽略掉小数点
  47. }else //指数为负
  48. {
  49. if(negtive)
  50. cout << "-";
  51. cout << "0.";
  52. for(int i=0;i<exp-1;i++)
  53. cout << "0";
  54. for(int i=0;i<v.size();i++)
  55. cout << v[i];
  56. }
  57. return 0;
  58. }
引用

https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168

PTA(Basic Level)1024.科学计数法的更多相关文章

  1. C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...

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

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

  3. P 1024 科学计数法

    转跳点:

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

    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 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)

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

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

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

  8. PAT (Basic Level) Practice 1024 科学计数法 分数 20

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

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

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

随机推荐

  1. 【Python之路】特别篇--Git & GitHub

    版本控制工具主要实现2个功能: 版本管理 在开发中,这是刚需,必须允许可以很容易对产品的版本进行任意回滚,版本控制工具实现这个功能的原理简单来讲,就是你每修改一次代码,它就帮你做一次快照 协作开发 一 ...

  2. html css回顾总结

    //html基本结构<!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. LabVIEW:可执行文件运行缺少运行库问题

    造冰箱的大熊猫@cnblogs 2018/5/11 上周调试设备网口犯了一个低级错误,今天又搞出一个笑话 目标机上没有LabVIEW开发环境,于是在开发机上将VI打包成可执行程序.在目标机上运行可执行 ...

  4. python中reversed()函数的用法

    reversed(a) # 返回一个反转的迭代器 举例 a = [1, 2, 3, 4, 5] b = reversed(a) # b是一个迭代器 # print(list(b)) = [5, 4, ...

  5. 记一次期待已久的渗透 从phpcms到thinkphp

    0X01 前言 这是刚刚开始学习渗透的一个目标吧 这个站从刚开始学的那一天起,就想把他日下来. 可能是自己的信息收集能力太差了吧,导致一直无从下手 没有进展.这是需要慢慢积累的过程.还需努力学习. 0 ...

  6. MS11-080提权

    前提是你渗透进入了一台服务器 这是微软11年的第80个漏洞 每一个漏洞都有一个对应的kb(补丁) 这里我们直接在kali里面搜索 root@kali:~# searchsploit ms11- --- ...

  7. 20165207 Exp6 信息搜集与漏洞扫描

    Exp6 信息搜集与漏洞扫描 一.实验内容 1. 查询基本信息 1.1. 使用whois.nslookup.dig命令查询DNS和ip信息 使用whois查询某个我经常用的学习网站的域名(去掉了前缀的 ...

  8. pure-ftpd搭建简单的Ubuntu FTP服务器

    Linux下的ftpd很多,Ubuntu下常用vsftpd, proftpd和pure-ftpd,当初使用的就是proftpd. 不过前两者有个致命的问题就是内码转换,它们默认使用UTF-8编码,而W ...

  9. 【转】Microsoft SQL Server 2008 R2 官方简体中文正式版下载(附激活序列号密钥)

    原文: https://www.bensblog.cn/1238.html

  10. Linux配置Key,禁止root实现免密码登陆

    前言:        我所理解的是Key登陆认证方式,其实就是拿私钥去解密公钥,私钥需要自己妥善保管,公钥可以随意公开. 废话少说,准备2台服务器,Server1:192.168.1.1   Serv ...