高精度問題

2022-05-30 20:06:07 字數 1433 閱讀 3961

今天我研究的是高精度問題。

一.高精度數的儲存

1.如對數採用的字串輸入

#include #include 

using

namespace

std;

const

int n=100;//

最多100位

intmain()

2.直接讀入

#include using

namespace

std;

const

int n=100;//

最多100位

intmain()

a[0]=i; //

共i位數

return0;

}

二.高精度數比較

int compare(int a,int b)   //

比較a和b的大小關係,若a>b則為1,a

return

0;//

各位都相等則兩數相等。

}

三、高精度加法

int plus(int a,int b) //

計算a=a+b

//if(a[k+1]>0) a[0]=k+1; //

修正新的a的位數(a+b最多只能的乙個進製)

else a[0]=k;

return0;

}

四、高精度減法

int gminus(int a,int b);//

計算a=a-b,返加符號位0:正數 1:負數

if(flag==1) //

大於 a[i]=a[i]-b[i];

}while(a[a[0]]==0) a[0]--; //

修正a的位數

return0;

}if (flag==-1)//

小於 則用a=b-a,返回-1

a[i]=b[i]-a[i];}a[

0]=b[0

];

while(a[a[0]]==0) a[0]--; //

修正a的位數

return -1

; }

}

五、高精度乘法(高精度乘單精度數,單精度數是指通常的整型數)

int multi1(int a,long  key) //

a=a*key,key是單精度數

for(i=1; i<=a[0]; i++)a[i]=a[i]*key; //

先每位乘起來

for(i=1; i<=a[0]; i++)

//注意上一語句退出時i=a[0]+1

while(a[i]>0

)

return0;

}

高精度除法(高精度除以高精度)

先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...

高精度除高精度

演算法流程 第一步,讀入被除數 a 和 除數 b,判斷是否 a b,是則輸出 0 並結束演算法,否則令 answer 0 第二步,令餘數 remainder 0,令 i 從被除數最高位的下標開始 第三步,令 remainder remainder 10 a i 令 c 9 第四步,判斷是否 b c ...

高精度除以高精度

原 題 高精除以高精,求它們的商和餘數。演算法分析 高精除以高精是用減法模擬除法,對被除數的每一位都減去除數,一直減到當前位置的數字 包括前面的餘數 小於除數 由於每一位的數字小於10,所以對於每一位最多進行10次計算 代 碼 include include include using namesp...