解題報告 ch1 大數問題

2021-06-19 08:49:57 字數 1728 閱讀 2034

424 - integer inquiry

//1.大數加法

兩個數a,b相加, 需要記錄進製g,

result的每一位 等於 a與b對應位相加再加上g

10106 - product

//1.大數乘法

a,b相乘

result 的位數 等於 a.len+b.len 最後去除字首0

result.s[i+j] = a.s[i] * b.s[j];

result.s[i+j+1] = result.s[i+j]/10;

result.s[i+j] %= 10;

465 - overflow

//1.大數比較

a,b首先比位數

然後從最大位往下逐位比較

//2. 中定義了許多常量

int_max

748 - exponentiation

//大浮點數

多記錄乙個小數點位置dot

消除字首0   ,整體len減

消除字尾0   ,陣列整體移動,len減,dot也得減

10494 - if we were a child again

//1.大數 減法(只在 a>b下 適用)

c=a-b

長度先等於a.len

然後各個位相減,記錄borrow位

最後消除字首0

//2.大數 的各種比較

利用 >  做各種變換即可

//3.大數除法

c=a/b

長度先等於a.len;

借助乙個bign helper;

helper = helper * 10 + a.s[i]

if (helper>b)

else c.s[i]=0;

最後消除字首0;

//4.大數取模

c=a%b;

*****=>   c = a - a/b *a;

//大數模版

#include #include #include #include #include using namespace std;

const int maxn=1000;

struct bign

bign(int a)

bign(const string &a)

bign operator= (const string &a)

bign operator= (int a)

bign operator+ (const bign &a) const

bign operator* (const bign &a) const

bool operator< (const bign &a) const

bool operator<= (const bign &a) const

bool operator>= (const bign &a) const

j = j-1;

c.s[i] = j;

helper = helper - a*j;

}else

}

for (; c.len>1 && !c.s[c.len-1]; --c.len);

return c;

} bign operator% (const bign &a) const

string str() const

ostream& operator << (ostream &out, const bign &x){

out<

解題報告 ch1 排序與搜素

340 master mind hints 1.快排的使用 10420 list of conquests 快排int my compare const void a,const void b qsort lover 1 country number,sizeof lover 1 my compar...

Problem1刪數問題解題報告

題目描述 給定一正整數n n的位數小於240 現要刪除數n中的s個數碼,使其得到的新數最小,求這個最小數。輸入輸入有兩行,第一行為整數n,第二行即為s 輸出輸出一行,即最小的那個數 測試樣例1 輸入輸出 測試樣例2 輸入輸出 解題思路 首先考慮s 1時的情況,很容易知道如果只刪乙個數,那麼若各位數字...

數獨問題解題報告

valid sudoku 九宮格就是要求每一行 每一列 每乙個粗線宮內的數字均含1 9,不重複。所以這裡我們的思路就是一次檢查每一行,每一列中是否有重複的數字如果有則返回false class solution cols for int j 0 j 9 j 當需要分割大的變為小的,可以通過次數來進行...