日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大整数减法

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大整数减法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇介紹大整數相減(兩個正數相減)
與大整數加法運算相比,減法運算稍微復雜了些,因為要考慮當結果為負數時候的情況。根據減法運算法則可以得出兩個整數相減為正數的情況。這樣想來,只需要在兩個正的大整數相減前比較大小即可得出另外一種情況。

例:

  • 11 - 20 = - ( 20 - 11)只需算出 20 - 11 即可獲得答案
  • 為了確定最終結果得符號(+ / -),需要比較兩個數得大小

所以最終功能的實現由以下部分組成:

  • 逆序存放數字(對齊整數的個位,便于計算)
  • 判斷兩個整數大小(確定最終結果為正數還是負數)
  • 用數組計算結果
  • 根據兩個整數的大小輸出結果
  • #include <iostream> #include <algorithm> #include <string> using namespace std; void swap(int a[], int len_a, int b[], int len_b) {int MAX = max(len_a, len_b);for (int i = 0; i < MAX; i++){swap(a[i], b[i]);} } int main() {int a[1001] = { 0 };int b[1001] = { 0 };string A, B;cin >> A >> B;int len1, len2;len1 = A.length();len2 = B.length();int flag = 0;//標記輸出結果為正或是負for (int i = len1 - 1, k = 0; i != -1; i--)//逆序存放{a[k] = A[i] - '0';k++;}for (int i = len2 - 1, k = 0; i != -1; i--){b[k] = B[i] - '0';k++;}if (len1 < len2)//比較大小{flag = 1;swap(a, len1, b, len2);swap(len1, len2);}else if (len1 == len2){for (int i = len1 - 1; i >= 0; i--){if (a[i] == b[i])continue;else if (a[i] > b[i])break;else{flag = 1;swap(a, len1, b, len2);swap(len1, len2);break;}}}int down = 0,max = len1 >= len2 ? len1 : len2;for (int i = 0; i < max; i++)//模擬減法{a[i] =a[i] - b[i] - down;down = 0;if (a[i] < 0){down = 1;a[i] += 10;}}if (flag){cout << "-";}int i;for (i = max - 1; a[i] == 0; i--);//忽略空格for (;i >= 0; i--){cout << a[i];}return 0; }

    總結

    以上是生活随笔為你收集整理的大整数减法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。