高精度アルゴリズム(一)高精度加算

1056 ワード

プログラミングを学んだ皆さんはきっとint longに慣れているのではないでしょうか.では、自然にそれぞれ表現できる数の範囲を知っています.例えばintが2^32と表現できる範囲は大きく見えますが、ビッグデータ時代の今では、intとは言わずにlong longでも足りないので、整形サイズを超えた数を使ったり計算したりするために、この数を表すために複数の数を使用する必要があります.複数の数を表すデータ型はc言語に配列と文字列があります.≪配列|Array|oraolap≫:配列要素ごとに1桁のビット数を格納します.(必ずしも桁数ではなく、10、12、2000かもしれません)、配列の利点は直接加減計算ができることですが、欠点は直接入力できないことです.桁数の間に区切りが必要です.これは数値入力の習慣文字列に合わないです.文字列の利点は直接入力でき、数値入力の習慣に合っていますが、各要素には1文字が格納されています.文字は数字ではなく、直接演算を行うことはできません.以上のように、長さを取って短さを補い、文字列で入力を読み取り、配列で出力を計算します.コードを添付
#include
#include
#define MAX 1000
int main(void)
{
	char str[MAX];
	int arr1[MAX]={0},arr2[MAX]={0},len,len1,len2,i,j;
	scanf("%s",str);
	len1=strlen(str);
	for(i=0;ilen2)?len1:len2;
	for(i=0;i

もちろん、上記のコードは整形加減しか処理できません.浮動小数点数を処理するには判断条件を追加して小数点を識別する必要があります.この場合、最後に配列ではなく文字列をエクスポートします.もちろん、1桁ではなく複数の数を同時に処理することもできます.これにより、大量の計算を減らして実行速度を向上させることができ、コードは後で更新されます.