题目链接

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

题解

第一遍也是没有全部AC,有3个测试点没过,原因如下:

  1. 没有处理指数为0的情况
  2. 指数为正时,没有处理不需补充0而需插入小数点的情况。(经过https://blog.csdn.net/whenever5225/article/details/90454014提示才知道的)

修改后全部都AC了。

整体的思路是获取整数和小数数值部分,然后获取指数,最后进行小数点的移动。

  1. // PAT BasicLevel 1024
  2. // https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6. int getExponent(string);
  7. int main()
  8. {
  9. // 原始字符串和结果
  10. string str,result;
  11. cin >> str;
  12. // 获取结果的符号
  13. string flag = (str[0] == '-' ? "-" : "");
  14. // E在原始字符串中的下标
  15. int eIndex = str.find_last_of('E');
  16. // 获得指数的值
  17. int exponent = getExponent(str.substr(eIndex + 1, str.length()));
  18. // 从原始字符串获取整数和小数部分的数值,现在小数点在result中的下标为1
  19. result = str[1]+str.substr(3, eIndex-3);
  20. // 根据指数进行小数点的移动
  21. if(exponent>0){
  22. // 判断是否需要补充0
  23. int numOfZero = exponent - (result.length() - 1);
  24. // 在尾部补充0
  25. if(numOfZero>=0){
  26. for (int i = 0; i < numOfZero; i++){
  27. result += '0';
  28. }
  29. }
  30. // 不需补充0,而是需要插入小数点
  31. else{
  32. result.insert(result.begin()+exponent+1,'.');
  33. }
  34. }else if(exponent<0){
  35. // 在首部补充0(for循环少补了一个0,这个少补的0在添加小数点时补上)
  36. exponent*=-1;
  37. for(int i=0;i<exponent-1;i++){
  38. result.insert(result.begin(),'0');
  39. }
  40. // 添加小数点
  41. result="0."+result;
  42. }else{
  43. // 添加小数点
  44. result.insert(result.begin()+1,'.');
  45. }
  46. // 输出结果
  47. cout << flag+result;
  48. //system("pause");
  49. return 0;
  50. }
  51. int getExponent(string str)
  52. {
  53. int flag=str[0]=='+'?1:-1;
  54. int num=0;
  55. for(int i=1;i<str.length();++i){
  56. num=num*10+str[i]-'0';
  57. }
  58. return flag*num;
  59. }

作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!


PAT乙级1024的更多相关文章

  1. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

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

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

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

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

  4. PAT乙级 1024 科学计数法

    思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...

  5. PAT乙级:1092 最好吃的月饼 (20分)

    PAT乙级:1092 最好吃的月饼 (20分) 题干 月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风 ...

  6. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

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

  7. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

  8. PAT 乙级 1017

    题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...

  9. PAT 乙级 1015

    题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...

随机推荐

  1. Visual Studio Code的设置及插件同步

    Visual Studio Code的设置及插件同步 使用Visual Studio Code开发有一段时间了,用起来是极其的顺手,但是唯独一点不爽的就是,Visual Studio Code不像Vi ...

  2. Top 5 Business Messaging Announcements at Facebook F8 2019

    Top 5 Business Messaging Announcements at Facebook F8 2019 By Iaroslav Kudritskiy May 2, 2019 With t ...

  3. Books Exchange (easy version)   CodeForces - 1249B2

    The only difference between easy and hard versions is constraints. There are nn kids, each of them i ...

  4. C语言递归之对称二叉树

    题目描述 给定一个二叉树,检查它是否是镜像对称的. 示例 二叉树 [1,2,2,3,4,4,3] 是对称的. / \ / \ / \ [1,2,2,null,3,null,3] 则不是镜像对称的. / ...

  5. octotree — 树形展示 Github 项目代码

    前言.... octotree 是一款chrome插件,用于将 Github 项目代码以树形格式展示,而且在展示的列表中,我们可以下载指定的文件,而不需要下载整个项目 源码地址: https://gi ...

  6. vi操作笔记一

    vi命令  gg 到首行 shift + 4 跳到该行最后一个字符 shift + 6 跳到该行首个字符 shift + g 到尾行 vi 可视 G 全选 = 程序对齐   gg 到首行 vi 可视  ...

  7. Linux就该这么学——新手必须掌握的命令之常用的系统工作命令

    echo命令 含义:echo命令用于在终端输出字符串或变量提取后的值,格式为 : echo [字符串|$变量] 示例: 将”Linuxprobe.com”输出到终端屏幕的命令为: [root@linu ...

  8. spark on yarn UI界面详解

    参考: spark on yarn图形化任务监控利器:History-server帮你理解spark的任务执行过程 spark内存分配原理 yarn运行原理详解 task,executor,core等 ...

  9. Python开发之JavaScript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...

  10. Mysql-Sqlalchemy-ORM-many_to_many

    orm_m2m.py from sqlalchemy import Table,Column,Integer,String,DATE, ForeignKey from sqlalchemy.orm i ...