總結:
關於高精度的計算 大體是乙個套路
模擬小學所學的計算過程(豎式計算)
然後注意:1.進製 2.排除前導零
2的乘方
#include
#include
#include
#include
#include
using
namespace
std;
int a[3010],b[3010],ans[10000];
int main()
int i=1;
while(a[i]>10)
n--;
}for(int j=wei;j>=1;j--)
高精加法
#include
#include
#include
#include
#include
using
namespace
std;
char s[3010];
char t[3010];
int a[3010],b[3010];
int main()
if(a[len+1]>0) len++;
while(a[len]==0&&len>1) len--;
for(int i=len;i>=1;i--) cout
0;}
高精減法
#include
#include
#include
#include
#include
using
namespace
std;
char s[3010];
char t[3010];
int a[3010],b[3010];
int main()
a[i]-=b[i];
}while(a[la]==0&&la>1) la--;
for(int i=la;i>=1;i--) cout
b[i]-=a[i];
}while(b[lb]==0&&lb>1) lb--;
for(int i=lb;i>=1;i--) cout
0;}
實數加法
#include
#include
#include
#include
#include
using
namespace
std;
char s[3010];
char t[3010];
int a[3010],b[3010];
int c[3010],d[3010];
int main()
for(int i=1;i<=lb;i++)
//for(int i=len;i>=1;i--) cout//for(int i=lenb+1;i<=lb-1;i++) d[i-lenb]=t[i]-48;
int lla=la-lena-1;
int llb=lb-lenb-1;
int llen=max(lla,llb);
for(int i=llen+lena;i>=lena+1;i--)
for(int i=llen+lenb;i>=lenb+1;i--)
for(int i=1;i<=llen;i++) c[i]+=d[i];
for(int i=1;i<=llen;i++)
if(c[llen+1]>0) flag=1;
int p=1;
while(c[p]==0)
len=max(lena,lenb);
for(int i=0;i<=lena-1;i++) a[lena-i]=s[i]-48;
for(int i=0;i<=lenb-1;i++) b[lenb-i]=t[i]-48;
if(flag==1) a[1]++;
for(int i=1;i<=len;i++) a[i]+=b[i];
for(int i=1;i<=len;i++)
if(a[len+1]>0) len++;
while(a[len]==0&&len>1) len--;
//for(int i=llen;i>=p;i--)
// cout=1;i--) cout
<<".";
for(int i=llen;i>=p;i--) cout
0;}
高精度乘單精度
#include
#include
#include
#include
#include
using
namespace
std;
int a[3010];
char b[3010];
int main()
for(int i=0;i<=len-1;i++) a[i]*=n;
for(int i=0;i<=len-1;i++)
int t=a[len];
while(t>0)
while(a[len]==0&&len>1) len--;
for(int i=len-1;i>=0;i--)
高精度乘高精度
#include
#include
#include
#include
using
namespace
std;
int a[1000],b[1000],c[1000],d[1000];
char s[1000],t[1000];
int la,lb,len;
bool judge()
return
true;
}void jian()
d[i]-=b[i];
}}void cheng()
int t=d[len+1];
while(t>0)
}int main()
cheng();
}while(c[len]==0&&len>1)len--;
for(int i=len;i>=1;i--) cout
0; }
高精度除單精度
#include
#include
#include
#include
#include
using
namespace
std;
char s[3010];
char t[3010];
int a[3010],b[3010],c[3010];
int main()
while(b[len]==0&&len>1) len--;
for(int i=len;i>=1;i--)
高精度除高精度(最難)
#include
#include
#include
#include
using
namespace
std;
int a[1000],b[1000],c[1000],d[1000];
char s[1000],t[1000];
int la,lb,len;
bool judge()//判斷大小的函式
return
true;
}void jian()//高精度減法
d[i]-=b[i];
}}void cheng()//高精度乘法 乘10(做除法時的計算)
int t=d[len+1];
while(t>0)
}int main()
cheng();
}while(c[len]==0&&len>1)len--;
for(int i=len;i>=1;i--) cout
0; }
高精度除法(高精度除以高精度)
先貼乙個簡單的高精度除以單精度的 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...