高精度整數加法
要求實現函式:
void add (const char *num1, const char *num2, char *result)
【輸入】num1:字串形式運算元1,如果運算元為負,則num1[0]為符號位'-'
num2:字串形式運算元2,如果運算元為負,則num2[0]為符號位'-'
【輸出】result:儲存加法計算結果字串,如果結果為負,則result[0]為符號位。
注:i、 當輸入為正數時,'+'不會出現在輸入字串中;當輸入為負數時,'-'會出現在輸入字串中,且一定在輸入字串最左邊位置;
ii、 輸入字串所有位均代表有效數字,即不存在由'0'開始的輸入字串,比如"0012", "-0012"不會出現;
iii、 要求輸出字串所有位均為有效數字,結果為正或0時'+'不出現在輸出字串,結果為負時輸出字串最左邊位置為'-'。
示例 輸入:num1 = "580"
num2 = "-50"
輸出:result = "530"
輸入:num1 = "580"
num2 = "-600"
#include #include #include void convert(char *str) ///字串倒序
}void add (const char *num1, const char *num2, char *result)
; char *pnum1=(char*)num1;
char *pnum2=(char*)num2;
char *presult=result;
bool isnum1posint=true; 判斷符標記
bool isnum2posint=true;
bool i***change=false; ///是否交換兩個數的資訊標誌位,將絕對值大的數放在第乙個數上。
if (*pnum1=='-')
if (*pnum2=='-')
if (*pnum1=='0' || *pnum2=='0') /判斷輸入資料是否合格
if (len1=len2) //後面的都置為'0'
ret[i]+=(pnum1[i]-'0')+(pnum2[i]-'0');
if (ret[i]>=10)
}if (!isnum1posint) ///判斷是兩正數相加還是兩負數相加
if (ret[i]==1) ///如果有進製,長度加1
}else ///如果為一正一負,大數在前,小數在後,相減
ret[i]+=(pnum1[i]-'0')-(pnum2[i]-'0');
if (ret[i]<0) 如果小於0,則需要借位。
}if (ret[len1-1]==0)
if (!isnum1posint)
}for (int j=0;j
演算法 高精度乘法2(高精度乘高精度)
題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...
高精度演算法 791 高精度加法
給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35注意點 1.兩個整數較大,用字串來存,這樣的話,可以呼叫它的size 方法 2.將兩個大的整數,存入vector陣列中,最好把整數...
高精度演算法
任務 高精度,計算大數乘小數 引數 乘法函式mul引數為 被乘數a,儲存最終結果的ans陣列,乘數b 結果 ans陣列中ans 0 為最高位,以此類推 include include using namespace std void mul char a,char ans,int b 任務 高精度,...