原作者
#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 任務 高精度,...