1073 Scientific Notation
Posted kkmjy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1073 Scientific Notation相关的知识,希望对你有一定的参考价值。
题意:
给出科学计数法的形式,转化成常规的表示,要求保留所有的有效位数
思路:纯粹的字符串处理问题,注意边界条件即可。如+1.23E+02这种,转化后是123,既不需要补0,也不需要添加小数点。
代码:
#include <iostream> #include <string> using namespace std; string change(string str) { string ans,sign; if(str[0]==‘-‘) sign="-"; str.erase(str.begin()); int pos=str.find("E"); string strExp=str.substr(pos+1,str.size()-1-pos); str=str.substr(0,pos); int exp=stoi(strExp); pos=str.find("."); str.erase(pos,1); if(exp<0){//前面添0 ans="0."+string(-exp-1,‘0‘)+str; }else{//后面补0 int len=str.size()-1;//小数点后面的位数 if(len<exp) ans=str+string(exp-len,‘0‘); else if(len>exp) { ans=str; ans.insert(exp+1,"."); }else{ ans=str; } } return sign+ans; } int main() { string str; cin>>str; cout<<change(str); return 0; }
以上是关于1073 Scientific Notation的主要内容,如果未能解决你的问题,请参考以下文章
PAT甲级——1073 Scientific Notation (20分)
PAT(A) 1073. Scientific Notation (20)