来,先看题目:1024 科学计数法

分数 20 作者 HOU, Qiming 单位 浙江大学

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

输入格式:

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

输出格式:

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

  1. 输入样例 1
  2. +1.23400E-03
  3. 输出样例 1
  4. 0.00123400
  5. 输入样例 2
  6. -1.2E+10
  7. 输出样例 2
  8. -12000000000

我有两种解决方法,一种是随着读的过程就打印出来,一种是存在字符串里。废话不多说,先看代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. string a,b;cin>>a;
  5. if(a[0]=='-')cout<<"-";
  6. //int i;//i-2位数,小数i-3
  7. int num;
  8. int pos=a.find('E');
  9. if(a[pos+1]=='-')num=(-1)*stoi(a.substr(pos+2));
  10. else num=stoi(a.substr(pos+2));
  11. int youxiaowei=-pos+3+num;
  12. for(int i=0;i<pos;i++){
  13. if(isdigit(a[i]))b=b+a[i];
  14. }
  15. int k=youxiaowei;
  16. k=k+b.size();
  17. if(youxiaowei<0){
  18. if(k<=0){
  19. cout<<"0.";
  20. for(int i=0;i<-1*k;i++)cout<<"0";
  21. cout<<b<<endl;
  22. }
  23. else{//测试点3,4 测试样例:+1.234E+01;
  24. int cnt=0;
  25. while(k-cnt!=0){
  26. cout<<b[cnt++];
  27. }
  28. cout<<"."<<b.substr(cnt);
  29. }
  30. }
  31. else{
  32. cout<<b;
  33. for(int i=0;i<(youxiaowei);i++)cout<<"0";
  34. cout<<endl;
  35. }
  36. return 0;
  37. }
  38. // #include<bits/stdc++.h>
  39. // using namespace std;
  40. // int main(){
  41. // string a,b;cin>>a;
  42. // if(a[0]=='-')cout<<"-";
  43. // //int i;//i-2位数,小数i-3
  44. // int num;
  45. // int pos=a.find('E');
  46. // if(a[pos+1]=='-')num=(-1)*stoi(a.substr(pos+2));
  47. // else num=stoi(a.substr(pos+2));
  48. // int youxiaowei=-pos+3+num;
  49. // for(int i=0;i<=pos;i++){
  50. // if(isdigit(a[i]))b=b+a[i];
  51. // }
  52. // int k=youxiaowei;
  53. // k=k+b.size();
  54. // if(youxiaowei<0){
  55. // if(k<=0){
  56. // for(int i=0;i<-1*k;i++)b="0"+b;
  57. // b="0."+b;
  58. // }
  59. // else{
  60. // b=b.substr(0,b.size()+youxiaowei)+"."+b.substr(b.size()+youxiaowei);
  61. // }//注意b.size()是一个无符号整数,如果它直接和另一个数相运算且结果小于0;则会出错测试点6
  62. // }
  63. // else{
  64. // for(int i=0;i<(youxiaowei);i++)b+="0";
  65. // }
  66. // for(int i=0;b[i]=='0';){
  67. // if(b.find('.')==1)break;
  68. // else b.erase(0,1);
  69. // }
  70. // if(b!="")
  71. // cout<<b;
  72. // else cout<<0<<endl;
  73. // return 0;
  74. // }

总结:一个无符号整数,如果它直接和另一个数相运算且结果小于0。运算得到的结果就不是小于0,而是它的存储的补码所构成的无符号整数,是一个非常大的数。所以,使用size()的时候当万分注意

pat 乙级1024 科学计数法关于stl中size()的一些思考即测试点六,无符号整数问题的更多相关文章

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

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

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

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

  3. PAT乙级 1024 科学计数法

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

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

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

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

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

  6. PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)

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

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

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

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

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

  9. P 1024 科学计数法

    转跳点:

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

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

随机推荐

  1. 【转载】VUE入门教程

    vue-cli是官方提供的一个脚手架,用于快速生成一vue项目,有点类似java中使用maven构建项目 需要环境 Node.js : http://nodejs.cn/download/ 安装完后在 ...

  2. APP上架因收集个人信息问题被拒绝该怎么解决?

    近年来,随着信息技术的快速发展和移动互联网应用的普及,越来越多的应用大量收集.使用个人信息,给人们生活带来便利的同时,也出现了对个人信息的非法收集.滥用.泄漏等问题,个人信息安全面临严重威胁. 201 ...

  3. ssm——spring整理

    目录 1.概述 2.Spring工厂与IOC 2.1.为什么要有Spring框架 2.2.什么是IOC 2.Spring工厂对实例注入 2.1.使用标签进行注入 2.2.使用注解进行注入 2.2.3. ...

  4. Spring MVC复习 —— 搭建Spring MVC项目

    Spring MVC复习 -- 搭建Spring MVC项目   摘要:这篇笔记是关于Spring MVC的复习,内容是如何搭建Spring MVC项目.   让我们快速的搭建一个Spring MVC ...

  5. 图文并茂使用VUE+Quasar CLI开发和构建PWA,registerServiceWorker介绍

    看文档 文档地址:Preparation for PWA 1.将PWA模式添加到我们的Quasar项目中: npx quasar mode add pwa 我们看一下有哪些变化 向Quasar项目添加 ...

  6. JDK8 四大核心函数式接口及扩展接口总结

    前言 Java8的四大函数式接口及相关的扩展接口在日常使用中的频率也是非常多的,包括自己定义的函数式接口,在JDK1.8之前,我们定义的方法都是用来接收参数,然后自己根据参数传递实现逻辑.在1.8之后 ...

  7. 1月9日内容总结——linux相关知识简介、虚拟化软件vmware、远程链接工具xshell

    目录 一.linux常见岗位 二.计算机的种类与服务器 三.服务器品牌 四.服务器内部组成 五.服务器磁盘阵列 六.linux简介 1.什么是linux 2.linux发展史 3.Linux系统的特点 ...

  8. 五、pycharm的安装与基本使用

    目录 一.pycharm的安装 1.软件介绍 2.正版安装 1.下载软件 2.安装软件 3.其他方法安装(需要先下载相关资源) ①无限试用法 ②傻瓜式激活法 ③淘宝购买 二.pycharm软件的使用 ...

  9. .NET为什么推荐它作为RabbitMQ消息队列的首选开发工具

    支持.Net Core(2.0及以上)/.Net Framework(4.5及以上),可以部署在Docker, Windows, Linux, Mac. RabbitMQ作为一款主流的消息队列工具早已 ...

  10. 项目与自身毕设对比整理规划6 330 done

    3.30 没用呢- - 功夫不负有心人啊啊啊啊啊啊啊啊啊啊啊啊啊啊 成功了- - 但是很可恶 需要把数据返回然后放在那个文件里面才可以 现在就是问题就是返回数据的时候需要把这个文件存成数据接口 fin ...