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 本题 ...
随机推荐
- 洛谷 P4137 Rmq Problem / mex
https://www.luogu.org/problemnew/show/P4137 只会log^2的带修主席树.. 看了题解,发现有高妙的一个log做法:权值线段树上,设数i对应的值ma[i]为数 ...
- Oracle / PLSQL写语句 常用的几个函数
下面开始记录一下,自己在Oracle或者PLSQL常用的几个函数, 1add_months 增加或减去月份2. last_day(sysdate) 返回日期的最后一天3. months_between ...
- 转 shell模拟数据库的读写
0.create table create table myTestTable as select rownum as id, to_char(sysdate + rown ...
- Java微服务 进程间通信
目录 进程间通信 同步调用 异步调用 实现方式 进程间通信 同步调用 同步调用比较简单,一致性强,但是容易出调用问题,出现单点故障,因为之间相互依赖,比如RPC必须要依赖的模块上线可用,己方才能调用, ...
- 关于如何用jq定位到某个元素的索引
在点击事件触发时候,通常如果有同样的className的列表我们都需获取它的索引来知道到底点击的是那一个 $('.info_content').mousemove(function(){ var ro ...
- THML5新增功能
HTML5新增功能 1.语义化标记: 1)article:article标签装载显示一个独立的文章内容.例如一篇完整的论坛帖子,一则网站新闻,一篇博客文章等等,一个用户评论等等 artilce可以嵌套 ...
- BeanUtils 工具类
一.BeanUtils 概述 BeanUtils 是阿帕奇提供的一套专门用于将一些数据封装到java对象中的工具类; 名词:javaBean:特定格式的java类称为java ...
- 将生成的Excel表发送到邮箱
本文接上一篇,将得到的Excel表发送到邮箱.. 在上一篇中,本人使用的是直接从数据库中获取数据,然后包装成Excel表.现在将该Excel表发送到目的邮箱,如果需要跟上篇一样,定时每天某时刻发送,就 ...
- 面向阿里云专家的 Azure 云服务介绍
本文是面向阿里云专家的 Azure 云服务介绍,参考本文可以帮助大家“按图索骥”在 Azure 的平台上找到能满足自己需求的服务. 在公有云计算蓬勃发展的同时,中国也出现了越来越多的本土公有云平台.针 ...
- shiro 配置拦截规则之后css和js等失效
使用shiro作为平台的权限管理工具,shiro的配置文件如下: package com.ros.config; import java.util.LinkedHashMap;import java. ...