演算法學習之路|科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式+-“.”[0-9]+E+-+,即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。
現以科學計數法的格式給出實數A,請編寫程式按普通數字表示法輸出A,並保證所有有效位都被保留。
輸入格式:
每個輸入包含1個測試用例,即一個以科學計數法表示的實數A。該數字的儲存長度不超過9999位元組,且其指數的絕對值不超過9999。
輸出格式:
對每個測試用例,在一行中按普通數字表示法輸出A,並保證所有有效位都被保留,包括末尾的0。
輸入樣例1:
+1.23400E-03
輸出樣例1:
0.00123400
輸入樣例2:
-1.2E+10
輸出樣例2:
-12000000000
解題思路:
輸入存入字串,將E替換為空格
這樣,我們得到兩個子字串,將其轉化為浮點數和整數
在根據整數的大小正負,給浮點數小數點向左/向右移動。
#include<iostream>
#include<sstream>
#include<stdio.h>
using namespace std;
int main(){
char a[25000];
scanf("%s",a);
for(int i=0;i<25000;i++){
if(a[i]==`E`){
a[i]=` `;
break;
}
}
istringstream b(a);
char x[12000];
int y;
b>>x>>y;
int fuhao=1;
if(x[0]==`+`)
fuhao=1;
if(x[0]==`-`)
fuhao=-1;
char x2[12000];
for(int i=0,i2=0;i<12000;i++){
if((x[i]>=`0`&&x[i]<=`9`)||x[i]==` `){
x2[i2++]=x[i];
}
}
int len=0;
for(int i=0;x[i]!=` `;i++)
len++;
len-=3;
if(y<0){
if(fuhao<0)
cout<<`-`;
for(int i=0;i<-1*y;i++){
if(i==1)
cout<<".";
cout<<"0";
}
cout<<x2;
}
else if (y>0){
if(fuhao<0)
cout<<"-";
if(y<len){
for(int i=0;x2[i]!=` `;i++){
cout<<x2[i];
if(i==y)
cout<<".";
}
}
else if (y>=len){
cout<<x2;
for(int i=0;i<y-len;i++){
cout<<"0";
}
}
}
else if(y==0){
cout<<x;
}
}
相關文章
- 演算法學習之路|個位數統計演算法
- 演算法學習之路|朋友數演算法
- 演算法學習之路|數零壹演算法
- 1024 科學計數法
- 演算法學習之路|字元統計演算法字元
- 演算法學習之路|最簡分數演算法
- 演算法學習之路|愛丁頓數演算法
- 演算法學習之路|划拳演算法
- 演算法學習之路|開學寄語演算法
- 演算法學習之路|寫出這個數(20)演算法
- 學習程式設計 vs 學習電腦科學程式設計
- 在SQL PLUS 顯示數值型 遮蔽科學計數法SQL
- 演算法學習之路|A除以B演算法
- 演算法學習之路|列印排名演算法
- 演算法學習之路|方格分割演算法
- 演算法學習之路|SpellItRight演算法
- 演算法學習之路|歐幾里得遊戲演算法遊戲
- 演算法學習之路|月餅演算法
- 演算法學習之路|PATRanking演算法
- 演算法學習之路|列印沙漏演算法
- 演算法學習之路|快速排序演算法排序
- 演算法學習之路|結繩演算法
- 演算法學習之路|互評成績計算演算法
- 通往資料科學之路資料科學
- PhpSpreadsheet 怎麼設定 數字不是科學計數法PHP
- PL/SQL DEVELOPER數字超長顯示了科學計數法SQLDeveloper
- 演算法學習之路|說反話演算法
- 演算法學習之路|幼兒園買玩具演算法
- 演算法學習之路|小賭怡情演算法
- 演算法學習之路|影像過濾演算法
- 演算法學習之路|日期問題演算法
- 演算法學習之路|賣個萌演算法
- 演算法學習之路|螺旋矩陣演算法矩陣
- 演算法學習之路|選擇題演算法
- 前端學習之路之自適應設計(sass語法)前端
- R語言中如何將科學計數法轉換為數值型R語言
- 【演算法學習】組合數學演算法
- PAT-B 1024 科學計數法【模擬+字串】字串