C 實現高精度大整數(大數)的四則運算

2021-08-13 04:35:04 字數 1927 閱讀 8736

為了便於大整數的運算,我們首先定義乙個結構體,用於儲存大整數。

struct bign

};

其中,bign(){}函式沒有任何返回值,作為bign結構體的析構函式,用於對定義的bign進行初始化。

一般來說,大整數一般是使用字串輸入的,下面將字串儲存的大整數存放在結構體中:

bign change(char str)

} c.d[c.len++]=a.d[i]-b.d[i];

} while(c.len-1>=1&&c.d[c.len-1]==0)//去除高位為0的!同時保留乙個最低位

return c;

}

高精度與低精度乘法運算規則

bign multi(bign a,int b)

return c;

}

列印結果!

void print(bign a)

}

主函式,這裡只呼叫兩個數 相加的情況

int main()

完整**:

#include #include#include #include#includeusing namespace std;

//基於c++的大整數運算

//首先,為了方便後面運算,我們先定義乙個結構體

struct bign

}; //一般來說,大整數一般是使用字串輸入的,下面將字串儲存的大整數

//存放在結構體中

bign change(char str)

} c.d[c.len++]=a.d[i]-b.d[i];

} while(c.len-1>=1&&c.d[c.len-1]==0)//去除高位為0的!同時保留乙個最低位

return c;

} //高精度的乘法運算規則

bign multi(bign a,int b)

return c;

} void print(bign a)

}int main()

時間限制

100 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者 chen, yue

本題要求計算a/b,其中a是不超過1000位的正整數,b是1位正整數。你需要輸出商數q和餘數r,使得a = b * q + r成立。

輸入格式:

輸入在1行中依次給出a和b,中間以1空格分隔。

輸出格式:

在1行中依次輸出q和r,中間以1空格分隔。

輸入樣例:

123456789050987654321 7
輸出樣例:
17636684150141093474 3
直接使用上面的演算法

ac**:

#include #include#include #include#includeusing namespace std;

//基於c++的大整數運算

//首先,為了方便後面運算,我們先定義乙個結構體

struct bign

}; //一般來說,大整數一般是使用字串輸入的,下面將字串儲存的大整數

//存放在結構體中

bign change(char str)

return c;

} void print(bign a)

}int main()

高精度四則運算 大數加減乘除

791 高精度加法 給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35 include include define lenmax 100000 int main while i ...

C 高精度整型數四則運算

高精度運算的實現思路,就是模擬人們在進行運算時的方法步驟。高精度的數數字比較多,用 int 陣列實現的話會浪費很多空間,這裡我們用 string 去實現。考慮到我們在手動做加減乘法的時候,都是從低位向高位做,只有除法是高位向低位做,為方便運算的實現,這裡我們倒著去存乙個數,例如,我們用 65248 ...

大數加法 減法 乘法 除法 高精度四則運算

1.加法 輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同時注意進製處理。include include int main b 555 c 555 scanf s m len m strlen m for i 0 i len m 1 i a i m len m 1 i 0 sca...