1. 程式人生 > 遊戲資訊 >【戰錘40k裝備介紹】真名魔典——記載著惡魔重大弱點的書卷

【戰錘40k裝備介紹】真名魔典——記載著惡魔重大弱點的書卷

題目描述:

高精度減法

輸入格式:

個整數a,b(第二個可能比第一個大)。

輸出格式:

結果(是負數要輸出負號)。

輸入輸出樣例

輸入#1                                           輸出#1

2                                                    1

1

 

說明/提示

20%資料a,b在long long範圍內;

100%資料0<a,b<1010086

 

題目需要注意的地方:

資料之間的大小問題

if ((num1.size() < num2.size()) || ((num1.size() == num2.size()) && (num1 < num2)))//
比較大小 { len = num2.size(); swap(num1, num2);//交換兩數 flag = 0;//標記 }

做減法時借位

c[i] += a[i] - b[i];
        if (c[i] < 0)
        {
            c[i + 1] --;
            c[i] += 10;
        }

 

 程式碼如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include
<cstring> using namespace std; int main() { int flag = 1; string num1, num2; cin >> num1 >> num2; int a[1050] = { 0 }, b[1050] = { 0 }, c[1050] = { 0 }; int len; if ((num1.size() < num2.size()) || ((num1.size() == num2.size()) && (num1 < num2)))//比較大小 { len
= num2.size(); swap(num1, num2);//交換兩數 flag = 0;//標記 } else len = num1.size(); //倒序儲存 for (int i = 0;i < num1.size();i++)//將字串轉換為數字,並存儲到陣列中 { a[i] = num1[num1.size() - i - 1] - '0'; } for (int i = 0;i < num2.size();i++) { b[i] = num2[num2.size()-i-1] - '0'; } for (int i = 0;i < len;i++)//借位 { c[i] += a[i] - b[i]; if (c[i] < 0) { c[i + 1] --; c[i] += 10; } } for (int i = len - 1;i >= 0;i--)//注意倒序輸出 { while (c[len-1] == 0&&i>0)//防止前面輸出0 i--; if (flag == 0) { cout << '-'; flag = 1; } cout <<c[i]; } }