今天我研究的是高精度問題。
一.高精度數的儲存
1.如對數採用的字串輸入
#include #includeusing
namespace
std;
const
int n=100;//
最多100位
intmain()
2.直接讀入
#include usingnamespace
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...