洛谷 P1957 口算練習題

並不難的一條題目

**就幾個點要注意:
1. 計算數字的長度時 要記得可能有負數 對負數要特殊處理
2. 對於這種不是很難 操作卻略繁瑣的題目 要先將每一步在草稿紙上分析好 再寫 以便保持思路的清晰(特別是我這種思維混亂的人)**

//P1957 口算練習題
//2016.11.13

#include <cstdio>
#include <iostream>
#include <stdio.h>
#include <algorithm>
#define MAXN 10000 + 2
using namespace std;

int n, a, b, c, len;
char d;
string t;

int length(int x){
    int len = 0, t = 1;
    if (x < 0) len++, x = -x;
    for (int i = 1; ;i++){
        t = t * 10;
        if (x < t) return i + len;
    }
}

int main(){

    cin >> n;
    for (int i = 0; i < n; i++){
        int j = 1;
        a = b = 0;
        cin >> t;
        if (t == "a") d = '+', j--;
        else if (t == "b") d = '-', j--;
        else if (t == "c") d = '*', j--;
        else
            for (int j = 0; j < t.size(); j++)
                a = a * 10 + t[j] - '0';

        if (j) cin >> b;
        if (!j) cin>> a >> b;

        if (d == '+') c = a + b;
        if (d == '-') c = a - b;
        if (d == '*') c = a * b;

        len = 2;
        len = length(a) + length(b) + length(c) + len;  

        cout << a << d << b << "=" << c << endl;
        cout << len << endl;
    }

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章