PAT Basic 1024
1024 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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
题解:这道题看上去感觉有点麻烦,要求保持精度基本上是要用字符串输出没错了,基本思路是 1.数字是负数,输出-,正数则不用理会。 2.判断指数部分为正还是为负
①若指数部分为负,输出"0."后根据指数部分的大小补0再输出原字符串的整数和小数部分即可。
②若指数部分为正,并且指数部分小于原字符串的精度,不需要补0,则先输出原字符串的整数部分以及小数点前的部分,再输出小数点及其之后的部分。
③若指数部分为正,并且指数部分大于原字符串的精度,需要补0,则先输出原字符串的整数及小数部分,再在其后补0即可。
个人所用的一些知识点复习:
1.stringstream既可以便于一些题目中的输入操作,也可以用于字符串转int型。
2.string下的substr方法,第一个参数表示开始截取字符串的位置,第二个参数表述截取的长度,如果截取长度超过该字符串的长度,则自动将字符串从截取位置开始全部截取。
注意:如果截取开始位置超过字符串长度,程序会抛出异常:
terminate called after throwing an instance of 'std::out_of_range'what():basic_string::substr代码如下:
#include<iostream>
#include<string>
#include<sstream> using namespace std; int main()
{
string a, flo, k;
stringstream k2;
char tail;
int m = , k1;
cin>>a;
/* 将小数部分存入 flo中 */
for( int i = ; i < a.length(); i++, m++){
if( a[i] == 'E')
break;
}
flo = a.substr(,m);
/* 将指数部分的符号存入tail中 */
tail = a[+m+];
/* 将指数部分的绝对值存入k1中 */
k = a.substr(+m+,a.length());
k2 << k;
k2 >> k1; if( a[] == '-' )
printf("-");
if( tail == '-' ){
printf("0.");
for( int i = ; i < k1 - ; i++)
printf("");
cout<<a[]<<flo<<endl;
}
else{
if(k1 < flo.length()){
string b = flo.substr(,k1);
string c = flo.substr(k1,flo.length());
cout<<a[]<<b<<"."<<c<<endl;
}
else{
cout<<a[]<<flo;
for( int i = ; i < k1-flo.length(); i++)
printf("");
}
}
return ;
}
这道题还有其他很多优秀的做法,比如字符串转数字可以使用stoi函数,但是由于不是标准库函数,就不一一写出来了。
PAT Basic 1024的更多相关文章
- PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...
- PAT Basic 1057
1057 数零壹 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有 ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)
PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ...
- PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20)
PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20) http://www.patest.cn/contests/pat-b-practise/1 ...
- PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 ...
- PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)
PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15) http://www.patest.cn/contests/pat-b-practise/10 ...
- PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)
PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20) http://www.patest.cn/contests/pat-b-practise/1027 本题 ...
随机推荐
- UVa10375:选择与除法(唯一分解定理)
The binomial coefficient C(m,n) is defined as Given four natural numbers p, q, r, and s, compute the th ...
- QlikView入门
1.windows x64下载地址: http://d1cf4w4kkla6tb.cloudfront.net/qlikview/11.20/11718/_MSI/QlikViewDesktop_x6 ...
- android开发学习 ------- 【转】 android中的单例模式 (详解)
https://blog.csdn.net/u011418943/article/details/60139644 这篇文章 前因后果 都说出来了 ,值得学习. https://blog.cs ...
- CSS3在hover下的几种效果
CSS3在hover下的几种效果代码分享,CSS3在鼠标经过时的几种效果集锦 效果一:360°旋转 修改rotate(旋转度数) * { transition:All 0.4s ease-in-out ...
- 在switch中的case语句中声明变量会被提前
原文链接:http://my.oschina.net/u/2000201/blog/514384 本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一 ...
- MessageQueue消息队列的开启
前言: MessageQueue消息队列形似一个保存消息的容器,发送方(例如服务程序)收集处理信息存储在队列中,接收方通过一定的协议取得队列中自己需要的信息,可以实现不同系统之间的通信: 但值得注意的 ...
- 1102 采药 2005年NOIP全国联赛普及组
1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 辰辰是个天资聪颖的孩子 ...
- WEB 前端菜鸟,感觉很迷茫,该怎么做?
前几天看到这样的问题 先说问题吧:感觉前端涉及到的东西太多了,自己也很浮躁,看了挺多书,可是代码缺敲得却不多.技术菜,又什么都想学,比如现在纠结要不要先学scss或者php或者angularjs,ba ...
- PHP识别二维码功能,php-zbarcode 安装
php-zbarcode是PHP识别二维码的扩展. 下面是安装方法,安装前要先安装ImageMagick.zbar. php-zbarcode 下载地址 安装ImageMagick: yum inst ...
- 分析(ExtractTransformLoad)与挖掘(DataMine)有何区别 ?
首先,介绍一下ETL 和 DM: ETL/Extraction-Transformation-Loading——用于完成DB到DW的数据转存,它将DB中的某一个时间点的状态,“抽取”出来,根据 ...