0%

PAT A1073 Scientific Notation

注意

一定要注意正负号的问题,插入的位置会发生变化。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <string>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
string str,ans="";
int epos,e;
int main(){
cin>>str;
epos=find(str.begin(),str.end(),'E')-str.begin();
e=abs(stoi(str.substr(epos+1)));
if(str[0]=='-') ans+='-';
if(str[epos+1]=='-'){
ans.append(e,'0');
for(int i=0;i<epos;i++){
if(isdigit(str[i])) ans.append(1,str[i]);
}
//一定要判断有没有负号的情况,小数点的位置不同的
if (ans[0]=='-') ans.insert(2,".");
else ans.insert(1,".");
}else if(str[epos+1]=='+'){
for(int i=0;i<epos;i++){
if(isdigit(str[i])) ans.append(1,str[i]);
}
if (e>=epos-3){//指数大于小数点后位数,就补零
ans.append(e-epos+3,'0');
} else{
if(ans[0]=='-') ans.insert(2+e,".");
else ans.insert(1+e,".");
}
}
cout<<ans;
return 0;
}

本文标题:PAT A1073 Scientific Notation

文章作者:GavinYGM

发布时间:2020年09月06日 - 21:09

最后更新:2020年09月06日 - 22:09

原始链接:http://www.gavinygm.cn/2020/09/06/PAT-A1073-Scientific-Notation/

许可协议: 转载请保留原文链接及作者。