日期:2023年5月18日
資料型別
定義識別符號
資料範圍
整型int
-231~231-1(≈2×109)
長整型long long
-263~263-1
無符號長整型
unsigned long long
0~264-1
上面給出的範圍的數稱為單精度數,對應的運算稱為單精度運算。
超出上面給出的範圍的數稱為高精度數(注:嘗試使用這些範圍儲存的話會導致溢位),對應的運算稱為高精度運算。
將輸入的數字匯入某一陣列(注:不同的數需要匯入不同陣列),並在該陣列中模擬計算過程,最後將陣列中的數字輸出。
注:陣列中的每乙個位置應只儲存乙個位數的數字,否則在輸出時可能會出現問題。
#includeusingnamespace
std;
char s[510];//
這個字元陣列作為資料的「中轉站」,最終將資料匯入陣列中
struct
bigint;
bigint
operator +(bigint a,bigint b)
for(int i=1;i<=k;++i)//
進製
if(a.v[k+1
])
//如果最高位也存在進製,增加k的長度
//嚴格來說,應該檢查不止一位。但因為加法最多會增加一位,所以檢查與否都無足輕重,然而在高精度乘法中會顯得尤為必要
a.length=k;
returna;}
bigint a,b;
intmain()
a.length=n;//
賦值 scanf("
%s",s+1
); n=strlen(s+1
);
for(int i=1;i<=n;++i)
b.length=n;
a=a+b;//
相加。這裡的+使用的是重新載入的+
for(int i=a.length;i>=1;--i)
return0;
}
1 #include2using
namespace
std;
3const
int n=10186;4
struct
bigint;
8bigint a,b,c;
9char
s[n];
10 bigint read()
18 c.length=n;
19return
c;20}21
bool
operator >=(bigint a,bigint b)
28if(m2932
for(int i=n;i>0;--i)
3338
if(a.v[i]3942}43
return
true;44
}45 bigint operator -(bigint a,bigint b)
54 a.v[i]-=b.v[i];55}
56while(a.v[k]==0&&k>1)57
60 a.length=k;
61return
a;62}63
intmain()else
//都是大的數減小的數,如果a73
for(int i=a.length;i>0;--i)
74//
同理,倒過來輸出
77return0;
78 }
1 #include2using
namespace
std;
3char s[2500];4
int result[4005]=,rlength;
5struct
bigint;
9 bigint operator *(bigint a,bigint b)16}
17for(int i=1;i<=4001;++i)
1822 rlength=a.length+b.length;
23while(result[rlength]==0&&rlength>1)24
//乘法最高位可能不止進一位,但因為所得結果的最多位數為a的位數,b的位數,可以從最多位數開始向後遍歷,在遇到不為0的數前且位數不為1時(考慮到結果為0的情況),將估計位數縮減27}
28bigint a,b;
29int
main()
36 a.length=n;
37 scanf("
%s",s+1
);38 n=strlen(s+1
);39
for(int i=1;i<=n;++i)
4043 b.length=n;
44 a=a*b;
45for(int i=rlength;i>=1;--i)
4649
return0;
50 }
1 #include2using
namespace
std;
3const
int n=5100;4
struct
bigint;
8 bigint operator /(bigint a,long
long
b)22
while(a.v[k]==0&&k>1)23
26 a.length=k;
27return
a;28}29
bigint a;
30long
long
b;31
char
s[n];
32int
main()
39 a.length=n;
40 scanf("
%lld
",&b);
41 a=a/b;
42for(int i=a.length;i>=1;--i)
4346
return0;
47 }
高精度運算
今天覆習了一下高精度運算。我覺得這種簡單的東西也得看一看,至少給自己留點兒低!高精度可以壓位的,但我今年懶得寫了 首先是加減法很簡單了,沒什麼值得特別強調的。高精度減法時別忘了,a時做下交換在計算,輸出時別忘了標記負號。高精度乘法需要注意的問題是,要在做完乘法之後再調整為十進位制。有的初學者小盆友喜...
高精度運算
雖說高精度直接考查的越來越少,不過還是以防萬一。define maxlen 1000 struct bint 本模板既可輸入字串,也可輸入整數 bint int t if len 1 len bint char str print number friend void print bint bi p...
高精度運算
name 高精度運算 author goal00001111 date 01 12 08 15 04 description 高精度運算 加減乘除,乘方,階乘 include include using namespace std void reverse string str void addin...