高精度演算法

2021-09-25 21:48:05 字數 2158 閱讀 5270

原作者

#include

#include

#include

#include

using namespace std;

int mi[

28];

const

int maxlen=

2e5+

16, maxbit=

1e8;

int max(

int a,

int b)

void shift()

void plus1()

};//並不是函式傳出來的東西不能引用,而是c++不允許臨時量被非常量引用

//因為不然你可以改變臨時量,這很奇怪

bool operator <(

const bigint &a,

const bigint &b)

bool operator <=(

const bigint &a,

const bigint &b)

istream& operator >>(istream &in, bigint &x)

x.len=(

len-1)/

8+1;

return in;

}ostream& operator <<(ostream &out,

const bigint &x)

bigint operator +(

const bigint &x,

const bigint &y)

if (re.a[maxlen]) re.

len=maxlen+

1;else re.

len=maxlen;

return re;

}//目前減法只處理自然數

bigint operator -(

const bigint &a,

const bigint &b)

//注意a=b

for (re.

len=x.

len; re.

len&&!re.a[re.

len-1]; --re.

len);

return re;

}//o(n)雙對單

bigint operator *(

const bigint &x,

int y)

for (re.

len=x.

len; re.a[re.

len]; ++re.

len);

return re;

}//n^2辣雞演算法,還不會傅利葉

bigint operator *(

const bigint &x,

const bigint &y)

if (re.a[x.

len+y.

len-1]) re.

len=x.

len+y.

len;

else re.

len=x.

len+y.

len-1;

return re;

}//n^2雙對單除法

bigint operator /(

const bigint &x,

int y)

for (; re.

len>

0&&!re.a[re.

len-1]; --re.

len);

return re;

}//n^2log1e8雙高精除法(fft後可以到nlog1e8)

bigint operator /(

const bigint &x,

const bigint &y)

}for (; re.

len>

0&&!re.a[re.

len-1]; --re.

len);

return re;

}bigint operator %(

const bigint &x,

const bigint &y)

}return tmp;

}void init()

bigint a, b;

int main()

演算法 高精度乘法2(高精度乘高精度)

題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...

高精度演算法 791 高精度加法

給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35注意點 1.兩個整數較大,用字串來存,這樣的話,可以呼叫它的size 方法 2.將兩個大的整數,存入vector陣列中,最好把整數...

高精度演算法

任務 高精度,計算大數乘小數 引數 乘法函式mul引數為 被乘數a,儲存最終結果的ans陣列,乘數b 結果 ans陣列中ans 0 為最高位,以此類推 include include using namespace std void mul char a,char ans,int b 任務 高精度,...