計算高精度加法,求助高精度除高精度的演算法

2025-05-09 15:05:08 字數 3055 閱讀 8212

1樓:網友

把輸入的數字看成是字元,悉侍再用小學學的加法的規則來實行一步一步的加法運算,最後輸出的也是字元,這睜衝吵樣佔用的空間又少算起來又快,而且不論多長都可以算。

#include

#include

#define max_len 80

int an1[max_len+10];

int an2[max_len+10];

char szline1[max_len+10];

char szline2[max_len+10];

int main()

scanf("%s",szline1);

scanf("%s",szline2);

int i,j;

memset(an1,0,sizeof(an1));

memset(an2,0,sizeof(an2));

int nlen1=strlen(szline1);

j=0;for(i=nlen1-1;i>=0;i--)an1[j++]szline1[i]-'0';

int nlen2=strlen(szline2);

j=0;for(i=nlen2-1;i>判此=0;i--)an2[j++]szline2[i]-'0';

for(i=0;i=10){/判斷是否要進位。

an1[i]-=10;

an1[i+1]++進位。

bool bstartoutput =false;//此變數用於跳過多餘的0

for(i=max_len;i>=0;i--)if(bstartoutput)

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

else if(an1[i]){

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

bstartoutput=true;

ptintf("");

return 0;

2樓:

目前最強的是decimal型別,128位高精度十進位數。

求助高精度除高精度的演算法

3樓:魚萊咎淑賢

高精度除法就是高精度減法的深一層次,其實高精度的思想就是我們平時算題時列豎式一樣,比如加法從右到左一位一位的算大於10就進位,減法一樣,只是如果碰到了不夠減的情況把加法的進位的變數變成借位禪培備的變數(例如t為此變數,加法在執行時,a,b兩個變數為兩個數的同一位上的兩個數,若a+b>10

則t-->1

如果是減法。

若a-b<0

t-->

每一次運算都要加上t當然做了判斷後要把哪一位相加得到的答案進行處理(加法-10

減法。a+10-b)賀毀。

至於你的這道題我也不知道應該怎麼處理,中圓但是我認為用高精度會不會太複雜了,一般的求最大公約數和最小公倍數用輾轉相除法,我想這道題應該是這種方法的改進形式是最好的方法。

高精度加法的介紹

4樓:手機使用者

高精度加法是資訊學的一種重要演算法。這種演算法使用多個儲存單位進行計算,因此它的計算範圍超過一般使用乙個儲存單位的演算法。也是一些資訊學競賽的常考題目。

高精度計算的高精度減法

5樓:手機使用者

和高精度加法相比,減法在差為負數時處理的細節更多一點:當被減數小於減數時,差為負數,差的絕對值是減數減去被減數;在程式實現上用乙個變數來儲存符號位,用另乙個陣列存差的絕對值。

演算法流程:(1).讀入被減數s1,s2(字串);

2).置符號位:判斷被減數是否大於減數:大則將符號位置為空;小則將符號位置為「- 交換減數與被減數;

3).被減侍姿數與減數處理成數值,放在陣列中;

4).運算:a、取數;

b、判斷是否需要借位;

c、減,將運算結果放到差陣列相應位中;

d、判斷是否運算完成:是,轉5;不是,轉a;

5).列印結果:符號位,第1位,迴圈處理第2到最後一位;

細節:▲如何判斷被減數與減數的大小?

如果位數一樣,直接比較字串大小;否則,位數多的大。

k1:=length(s1); k2:=length(s2);

if k1=k2 then

if s1260 then write('0')else begin

write(fh,c[k]);

for i:=k+1 to 260 do

beginif c[i]<100 then write('0');

if c[i]<10 then write('0');

write(c[i]);

end;end;

var s1,s2,s3,s4,s:string;

a,b,c:array[1..260]of integer;

i,k1,k2,l,code,jw:longint;

fh:string;

beginreadln(s1); readln(s2);

k1:=length(s1); k2:=length(s2); fh:='

if k1=k2 then

if s1260 then writeln('0')else begin

write(fh,c[k1]);

for i:=k1+1 to 260 dobeginif c[i]<1000 then write('0');

if c[i]<100 then write('0');

if c[i]<10 then write('0');

write(c[i]);

end;end;

#include

#include

#include

#include

int const n=1000;

typedef int arr[n];

高精度計算的介紹

6樓:元元

高精度運算凱凳,是指參與運算的數(加數,減數,因子……)範圍大大超出了標準盯裂旅資料來源遲型別(整型,實型)能表示的範圍的運算。例如,求兩個200位的數的和。這時,就要用到高精度演算法了。

C語言高精度加法,c語言程式設計 高精度加減法

首先,你的進位沒有處理好,就是最後那個迴圈,其次,你這樣把字元陣列轉換成整型陣列沒有提高程式的執行效率,反而降低了,要麼就直接用字元陣列進行操作,或者可以每四個字元數字轉換成一個整型資料。ps,我也不是很厲害,如果有什麼不對,請指正 include include void addnum void ...

高精度溫度控制器哪家便宜?

我建議樓主首先要考慮買價效比高的,武漢松野的不錯,也挺便宜的。如果想買比較便宜的話,我知道的有松野這個品牌,他家這類產品 都不是很貴,像他們家的高精度溫度控制器的,控制方式有普通位式控制,也有時間比例控制,也有pid控制,還是比較方便的。樓主想要便宜點的高精度溫度控制器的話,可以買松野品牌,是個臺灣...

pascal高精度除法的思想是什麼

思想 模擬除法豎式的計算方法 我個人的解釋,標準的我不太清楚 我記不清了。網上應該會有的。高精除高精可以轉換成 移位 然後 減法 來做 高精除低精 可以先把低精轉化成高精 然後按上面的方法做 參見 高精度除法可以這樣做 思想你自己會明白的 定義四個陣列 兩個整型 一個布林 一個實數型別1.用字串x,...