PAT乙级1024
题目链接
https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168
题解
第一遍也是没有全部AC,有3个测试点没过,原因如下:
- 没有处理指数为0的情况
- 指数为正时,没有处理不需补充0而需插入小数点的情况。(经过https://blog.csdn.net/whenever5225/article/details/90454014提示才知道的)
修改后全部都AC了。
整体的思路是获取整数和小数数值部分,然后获取指数,最后进行小数点的移动。
// PAT BasicLevel 1024
// https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168
#include <iostream>
#include <string>
using namespace std;
int getExponent(string);
int main()
{
// 原始字符串和结果
string str,result;
cin >> str;
// 获取结果的符号
string flag = (str[0] == '-' ? "-" : "");
// E在原始字符串中的下标
int eIndex = str.find_last_of('E');
// 获得指数的值
int exponent = getExponent(str.substr(eIndex + 1, str.length()));
// 从原始字符串获取整数和小数部分的数值,现在小数点在result中的下标为1
result = str[1]+str.substr(3, eIndex-3);
// 根据指数进行小数点的移动
if(exponent>0){
// 判断是否需要补充0
int numOfZero = exponent - (result.length() - 1);
// 在尾部补充0
if(numOfZero>=0){
for (int i = 0; i < numOfZero; i++){
result += '0';
}
}
// 不需补充0,而是需要插入小数点
else{
result.insert(result.begin()+exponent+1,'.');
}
}else if(exponent<0){
// 在首部补充0(for循环少补了一个0,这个少补的0在添加小数点时补上)
exponent*=-1;
for(int i=0;i<exponent-1;i++){
result.insert(result.begin(),'0');
}
// 添加小数点
result="0."+result;
}else{
// 添加小数点
result.insert(result.begin()+1,'.');
}
// 输出结果
cout << flag+result;
//system("pause");
return 0;
}
int getExponent(string str)
{
int flag=str[0]=='+'?1:-1;
int num=0;
for(int i=1;i<str.length();++i){
num=num*10+str[i]-'0';
}
return flag*num;
}
作者:@臭咸鱼
转载请注明出处:https://www.cnblogs.com/chouxianyu/
欢迎讨论和交流!
PAT乙级1024的更多相关文章
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT乙级 1024. 科学计数法 (20)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT乙级 1024 科学计数法
思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...
- PAT乙级:1092 最好吃的月饼 (20分)
PAT乙级:1092 最好吃的月饼 (20分) 题干 月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风 ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
随机推荐
- kubeadm安装集群系列-2.Master高可用
Master高可用安装 VIP负载均衡可以使用haproxy+keepalive实现,云上用户可以使用对应的ULB实现 准备kubeadm-init.yaml文件 apiVersion: kubead ...
- 【Java开发】Maven那点事儿(Eclipse版)
Maven那点事儿(Eclipse版) 前言: 由于最近工作学习,总是能碰到Maven的源码.虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下.这篇文章不是一个全面的Maven解 ...
- typescript实现类规则
备注: 单独的 index.d.ts对于代码实现没有约束性,将约束和实现写在一个页面里有约束性,或者使用如下: // clock.interface.ts export interface Clock ...
- pig-csm 7.9修改记录
PigCms\Lib\Action\System\UsersAction.class.php 存在页面广告跳转 bbs.go _pe.cn的问题 tpl\Home\weimob\public_head ...
- python 配合 es 查询数据
1.python脚本 [root@do1cloud03 ~]# cat python-es.py #!/usr/bin/env python3 from elasticsearch import El ...
- prometheus 的promsql的经典例子 安装grafana
0.好的参考文档 https://www.cnblogs.com/longcnblogs/p/9620733.html 1.多维度数据 2.Prometheus的全局监控指标 只需要定义一个全局的指标 ...
- 吉首大学2019年程序设计竞赛(重现赛)- A SARS病毒 (矩阵,欧拉降幂)
题目链接:https://ac.nowcoder.com/acm/contest/992/A 题意:求出长度为n的字符串个数,字符串由A.C.G.T组成,其中A和C必须成对出现. 思路:我们规定: ...
- [转帖]docker容器保持运行不退出
docker容器保持运行不退出 2019年01月20日 23:21:22 chvalrous 阅读数 1511 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- Djangon简介
目录 Djangon简介 MVC与MTV模型 MVC MTV python三大主流web框架 Django的下载与基本命令 基于Django实现的一个简单示例 Django静态文件配置 Django ...
- Django-choices字段值对应关系(性别)-MTV与MVC科普-Ajax发json格式与文件格式数据-contentType格式-Ajax搭配sweetalert实现删除确认弹窗-自定义分页器-批量插入-07
目录 models 字段补充 choices 参数/字段(用的很多) MTV与MVC模型 科普 Ajax 发送 GET.POST 请求的几种常见方式 用 Ajax 做一个小案例 准备工作 动手用 Aj ...