科學記數法是科學家容易處理很是大或很是小的數字的方法。該符號與正則表達式[+-][1-9].[0-9]+E[+-][0-9]+匹配,這意味着整數部分只有一個數字,小數部分至少有一個數字,而且即便數字及其指數符號爲正,也始終提供數字及其指數符號。
如今給定一個實數a,在科學記數法中,你應該在傳統記數法中打印a,同時保留全部有效數字。
輸入規格:
每一個輸入包含一個測試用例。對於每種狀況,在科學記數法中都有一行包含實數A。數字長度不超過9999字節,指數的絕對值不超過9999。
輸出規格:
對於每一個測試用例,在一行中用傳統符號打印輸入數字A,保留全部有效數字,包括尾隨的零。ios
+ 0.0012E+2正則表達式
000.12ide
#include <iostream> using namespace std; int main(){ string s, left; int rig; cin >> s; if (s[0] == '-') printf("-"); for (int i = 0; i < s.size(); i++){ if (s[i] == 'E'){ left = s.substr(1, i - 1); rig = stoi(s.substr(i + 1)); break; } } if (rig < 0){ printf("0."); for (int i = 0; i < abs(rig) - 1; i ++) printf("0"); for (int i = 0; i < left.size(); i++) if (left[i] != '.') printf("%c", left[i]); }else { printf("%c", left[0]); int i, cnt; for (i = 2, cnt = 0; i < left.size() && cnt < rig; i++, cnt++) printf("%c", left[i]); if (i == left.size()) while (cnt++ < rig) printf("0"); else { printf("."); while (i < left.size()) printf("%c", left[i++]); } } return 0; }