九度OJ 1137 浮點數加法

2021-06-29 00:27:16 字數 1380 閱讀 4980

題目描述:

求2個浮點數相加的和

題目中輸入輸出中出現浮點數都有如下的形式:

p1p2…pi.q1q2…qj

對於整數部分,p1p2…pi是乙個非負整數

對於小數部分,qj不等於0

輸入:

對於每組案例,第1行是測試資料的組數n,每組測試資料佔2行,分別是兩個加數。

每組測試資料之間有乙個空行,每行資料不超過100個字元

輸出:

每組案例是n行,每組測試資料有一行輸出是相應的和。

輸出保證一定是乙個小數部分不為0的浮點數

樣例輸入:

2 0.111111111111111111111111111111

0.111111111111111111111111111111

#include 

#include

struct biginteger

size_xiaoshu=0;

size_zhengshu=0;

} void set(char

str)

}//處理小數

i=tmp+1;

for (int j = i; j < len; ++j)

digit_xiaoshu[size_xiaoshu++]=str[j]-'0';

}biginteger operator +(const biginteger &a) constelse

max = a.size_xiaoshu;

for (int i = max -1; i >= 0; i--)

for (int i = max-1; i >= 0; i--)

}for (int i = 0; i < size_zhengshu||isum=digit_zhengshu[i]+a.digit_zhengshu[i]+carry;

ret.digit_zhengshu[ret.size_zhengshu++]=sum%10000;

carry=sum/10000;

}if (carry)

ret.digit_zhengshu[ret.size_zhengshu++]=carry;

return ret;

}void print()

printf(".");

if (size_xiaoshu==0)

printf("0");

else

for (int i = 0; i < size_xiaoshu; ++i)

printf("%d", digit_xiaoshu[i]);

printf("\n");

}};int main()

}return

0;}

九度OJ 1137 浮點數加法

本題本來想採用寫好的bigint模板直接套用,後來發現用高精度整數相當麻煩,於是直接使用字串加法器的方法進行重寫。debug過程 見 注釋。題目描述 求2個浮點數相加的和 題目中輸入輸出中出現浮點數都有如下的形式 p1p2.pi.q1q2.qj 對於整數部分,p1p2.pi是乙個非負整數 對於小數部...

OJ 1137 浮點數加法

include include include include using namespace std vectorve void getsum string a,string b int k a i 0 b j 0 inc int newk k 10 inc k 10 ve.push back n...

浮點數加法

include includechar input 2 1000 int n char point1 1000 point2 1000 char int1 1000 int2 1000 int pointans 1000 int intans 1000 bool pointcarry int foo...