自己寫的**,測試了幾組測試樣例,都沒什麼問題,**如下:
#define _crt_secure_no_deprecate
#include #include #include#includeusing namespace std;
const int maxn = 3000000 + 80;
const int m = 2000000;
const int wei = 100;
void get(int *a, int *b)
//統計數有多少位
int cal(long long n)
return sum;
}//大數有多少位
int cal(int *n)
//列印大數
void prin(int *an1)
//大數大小比較
int compare(int *an1, int *bn1)
} }return 0;
}//把大數初始化為零
void chushihua(int *n)
//大數加正常數
void jia(int *an1, int bn1, int *cn1)
for (int i = 0; i= 10)
for (int i = 0; i= 10)
for (int i = 0; i= 10)
for (int i = 0; i= 10) }
//大數乘大數
void chen(int *an1, int *bn1, int *cn1)
for (int i = 0; i < wei - 1; i++)
if (cn1[i] >= 10) }
//大數除大數
void chu(int *a, int *b, int *c)
while (compare(a, temp) != -1)
}// cout << "1asd " << c[0] << " " << c[1] << " " << c[2] << endl;
for (int i = 0; i= 10)
// cout << "1asd " << c[0] << " " << c[1] << " " << c[2] << endl;
}//大數模大數
void mod(int *a, int *b, int *c)
int main(){
int a1[wei], b1[wei], c1[wei];
char ch1[wei], ch2[wei];
while (cin >> ch1>>ch2 )
{ for (int i = 0; i < wei; i++)
a1[i] = b1[i] = c1[i] = 0;
for (int i = 0; i
大數運算(加減乘除)
加法 void add char a,char b,char d for i len i 1 i if c i 48 len else break for i 0 i len i d i c len i view code 減法1 d2 d1,如果需要比較大小自己加乙個不麻煩。void dec ch...
大數運算 加減乘除
大數運算產生的原因就是因為int,double型別表示範圍都有限,無法表示過長的數字比如 2345468454567865415467864453437。因此也就無法進行四則運算,為了實現這種運算,大數運算產生了。其實也很簡單,既然基本資料型別放不下這些資料,那就用陣列存放唄。定義char c 10...
大數運算 (加減乘除)
大數加減乘除應該都不陌生了吧,原來只寫過大數加法,弱弱的我重溫了一下這種,發現還是蠻有意思的。不知道有沒有感覺到,解決這類問題進製思路都挺簡單的,主要錯的地方就是最後細節的處理,前導0的去除,型別轉換等之類的問題。都是按整數輸入資料 沒有考慮小數點之類的輸入和負數的情況。大數加法 hdu1002 l...