PAT (Advanced Level) 1073. Scientific Notation (20)
简单模拟题。
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<stack> #include<queue> #include<string> #include<algorithm> using namespace std; char s[100000]; int p; int main() { scanf("%s",s); for(int i=0;s[i];i++) if(s[i]=='E') p=i; if(s[0]=='-') printf("%c",s[0]); int num=0; for(int i=p+2;s[i];i++) num=num*10+s[i]-'0'; if(s[p+1]=='-') { printf("0."); for(int i=0;i<num-1;i++) printf("0"); for(int i=1;s[i];i++) { if(s[i]=='E') break; if(s[i]=='.') continue; else printf("%c",s[i]); } } else { int d; for(int i=1;s[i];i++) { if(s[i]=='.') d=i; } if(p-d-1>num) { if(s[1]!='0') printf("%c",s[1]); for(int i=3;i<3+num;i++) printf("%c",s[i]); printf("."); for(int i=3+num;s[i];i++) { if(s[i]=='E') break; printf("%c",s[i]); } } else { for(int i=1;s[i];i++) { if(s[i]=='E') break; if(s[i]=='.') continue; if(i==1&&s[i]=='0') continue; printf("%c",s[i]); } for(int i=0;i<num-(p-d-1);i++) printf("0"); } } return 0; }