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 本题 ...
随机推荐
- CSS以及JS各种库的在线CDN引用地址
JS类—— html5.js,让你的IE浏览器支持H5新特性:http://html5shiv.googlecode.com/svn/trunk/html5.js (记得要注释判断哦) JQuer ...
- 转 测试linux中expect的timeout参数的作用
http://blog.csdn.net/msdnchina/article/details/50638818
- JavaScript Allongé 第一呷 :基础函数 (1)
第一呷 :基础函数 关于函数,尽管少,但毫不逊色. 在javascript中,函数是值,但它们不仅仅是简单的数值,字符串,或者甚至复杂的数据结构树或者地图.函数表示要执行的运算.就像数值.字符串和数组 ...
- Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础
来源作者:candycat http://blog.csdn.net/candycat1992/article/ 概述 总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达 ...
- ubuntu键盘映射
在sublime下开发习惯把CapsLock和Shift间交换,windows下有很多软件可以修改键盘映射,在ubuntu下可以是哦用xmodmap命令,使用方法如下: 在自己用户的home目录下新建 ...
- JAVA-汉字转换成汉语拼音(pinyin4j-2.5.0-sources.jar)
在项目中,经常会使用汉语拼音,特别是把汉字转换成汉语拼音.下面给出一种常用的工具. 在使用该程序必须添加 pinyin4j-2.5.0-sources.jar包. import net.sourcef ...
- kafka-->storm-->mongodb
目的: 通过Spout发射kafka的数据,到bolt统计每一个单词的个数,将这些记录更新到mongodb中. Spout的nextTuple方法会一直处于一个while循环这中,每一条数据发送给bo ...
- SQL Server中变量的声明和使用方法
声明局部变量语法:DECLARE @variable_name DataType其中 variable_name为局部变量的名称,DataType为数据类型.给局部变量赋值有两种方法:1.SET @v ...
- 查看mysql已有用户并删除
查看: SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 删除: drop us ...
- Cannot fetch index base URL https://pypi.python.org/pypi/ 解决方法
vi /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # ...