高精度大數相加

2021-07-15 12:15:43 字數 1306 閱讀 9156

下面的**是我自己想出來的,可能有點麻煩

# include # include # define max 5005

int num1[max];

int num2[max];

int sum[max];

int main(void)

} for (i = 0; i < len2; i ++)

}int pos = flag1 > flag2 ? flag1 - flag2 : flag2 - flag1;

/*以小數點為中心,進行對齊*/

if (flag1 > flag2)

}for (i = len2 - 1, j = pos; i >= 0; i --)

}} else

}for (i = len1 - 1, j = pos; i >= 0; i --)

}} /*

for (i = 0; i < len1; i++)

printf("\n");

for (i = 0; i < len2; i++)

printf("\n");

*/int c = 0;

int s = 0;

for (i = 0; i <= len1 + len2; i++)

for (i = len1 + len2 + 1; i >= 0; i--)

}for (j = 0; j < len1 + len2 + 1; j ++)

}// printf("i = %d\n", i);

// printf("j = %d\n", j);

if (i == -1)

int flag = flag1 > flag2 ? flag1 : flag2;

// printf("flag = %d\n", flag);

/*以下是判斷小數點的輸出位置以及是否需要輸出小數點*/

if (flag == 0)

printf("\n");

} else

printf("\n");

}else if (flag == i)

printf("\n");

}else

}else

printf(".");

for (i = flag-1; i >= j; i--)

printf("\n");

}else if (flag == j)

printf("\n");

}else

printf("\n");}}

} }return 0;

}

高精度加法 大數相加

問題描述 輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。演算法描述 由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。定義乙個陣列a,a 0 用於儲存a的個位,a 1 用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。計算c ...

大數相加 陣列 高精度

問題描述 輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。演算法描述 由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。定義乙個陣列a,a 0 用於儲存a的個位,a 1 用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。計算c ...

大數相乘「高精度乘低精度」和「高精度乘高精度」

二 高精度乘高精度 如下 由於計算機的儲存位元組有限,所以不能完整表示乙個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡的高精度乘法主要指按位模擬乘法,實際上就是模擬乘法的過程,也就是筆算的過程。高精度乘低精度,即乙個大數與乙個小於10000的數相乘,大數使用字串來進行儲存,較...