生活随笔
收集整理的這篇文章主要介紹了
【PAT乙级】1024 科学计数法 (20 分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目地址
上面的精簡寫法:
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std
;
bool flag1
,flag2
;
string s
,ans
;
int step1
,step2
;
int sum
;
void slove()
{if(!flag2
) reverse(ans
.begin(),ans
.end());string temp
;if(sum
>ans
.size()) {temp
+=ans
;for(int i
=1;i
<=sum
-ans
.size();i
++) temp
+='0'; if(!flag2
){reverse(temp
.begin(),temp
.end());cout
<<"0.";}cout
<<temp
<<endl
;}else{for(int i
=0;i
<sum
;i
++) temp
+=ans
[i
];if(sum
!=ans
.size()) temp
+=".";for(int i
=sum
;i
<ans
.size();i
++) temp
+=ans
[i
];if(!flag2
)reverse(temp
.begin(),temp
.end());cout
<<temp
<<endl
;}
}
int main(void)
{cin
>>s
; if(s
[0]=='+') flag1
=true;else cout
<<'-';s
=s
.substr(1);ans
+=s
[0]; s
=s
.substr(2);for(int i
=0;s
[i
]!='E';i
++) ans
+=s
[i
];if(s
.find('+')!=-1) flag2
=true,step1
=1,s
=s
.substr(s
.find('+')+1),sum
=stoi(s
);else step2
=ans
.size()-1,s
=s
.substr(s
.find('-')+1),sum
=stoi(s
);if(flag2
) sum
+=step1
;else sum
+=step2
;slove();return 0;
}
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std
;
string s
,ans
;
bool flag
;
int step1
,step2
;
int sum
;
void slove()
{string temp
;if(!flag
) reverse(ans
.begin(),ans
.end());if(sum
>=ans
.size()) {temp
+=ans
;for(int i
=1;i
<=sum
-ans
.size();i
++) temp
+='0';if(!flag
) temp
+=".0";}else{for(int i
=0;i
<sum
;i
++) temp
+=ans
[i
];temp
+='.';for(int i
=sum
;i
<=ans
.size();i
++) temp
+=ans
[i
];} if(!flag
) reverse(temp
.begin(),temp
.end());cout
<<temp
<<endl
;
}
int main(void)
{cin
>>s
; if(s
[0]=='-') cout
<<'-';s
=s
.substr(1);ans
+=s
[0];s
=s
.substr(2);for(int i
=0;s
[i
]!='E';i
++) ans
+=s
[i
];if(s
.find('-')!=-1) step2
=ans
.size()-1,sum
=stoi(s
.substr(s
.find('-')+1)),sum
+=step2
;else flag
=true,step1
=1,sum
=stoi(s
.substr(s
.find('+')+1)),sum
+=step1
;slove();return 0;
}
#include<bits/stdc++.h>
using namespace std
;
int main(void)
{string s
,a
; cin
>>s
;if(s
[0]=='-') cout
<<"-";s
=s
.substr(1);int n
;for(int i
=0;i
<s
.size();i
++){if(s
[i
]>='0'&&s
[i
]<='9') a
+=s
[i
];if(s
[i
]=='E') break;}n
=stoi(s
.substr(s
.find('E')+1));if(n
<0){cout
<<"0.";for(int i
=0;i
<abs(n
)-1;i
++) cout
<<0;for(int i
=0;i
<a
.size();i
++) cout
<<a
[i
];}else{n
++;if(n
<a
.size()){for(int i
=0;i
<n
;i
++) cout
<<a
[i
];cout
<<".";for(int i
=n
;i
<a
.size();i
++) cout
<<a
[i
];}else{cout
<<a
;for(int i
=0;i
<n
-a
.size();i
++) cout
<<0;}}
}
總結
以上是生活随笔為你收集整理的【PAT乙级】1024 科学计数法 (20 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。