結果

問題 No.81 すべて足すだけの簡単なお仕事です。
ユーザー nanasilinanasili
提出日時 2014-11-28 02:19:23
言語 C++11
(gcc 11.4.0)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 4,059 bytes
コンパイル時間 950 ms
コンパイル使用メモリ 96,660 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-08-21 12:57:19
合計ジャッジ時間 2,090 ms
ジャッジサーバーID
(参考情報)
judge11 / judge14
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,376 KB
testcase_01 AC 1 ms
4,380 KB
testcase_02 AC 1 ms
4,376 KB
testcase_03 AC 1 ms
4,380 KB
testcase_04 AC 2 ms
4,380 KB
testcase_05 AC 2 ms
4,376 KB
testcase_06 AC 2 ms
4,376 KB
testcase_07 AC 1 ms
4,380 KB
testcase_08 AC 1 ms
4,376 KB
testcase_09 AC 2 ms
4,380 KB
testcase_10 WA -
testcase_11 AC 1 ms
4,376 KB
testcase_12 AC 2 ms
4,376 KB
testcase_13 AC 2 ms
4,376 KB
testcase_14 AC 1 ms
4,376 KB
testcase_15 AC 2 ms
4,376 KB
testcase_16 AC 1 ms
4,380 KB
testcase_17 AC 2 ms
4,380 KB
testcase_18 AC 2 ms
4,380 KB
testcase_19 AC 1 ms
4,376 KB
testcase_20 AC 1 ms
4,376 KB
testcase_21 AC 2 ms
4,380 KB
testcase_22 AC 2 ms
4,380 KB
testcase_23 AC 1 ms
4,376 KB
testcase_24 AC 1 ms
4,376 KB
testcase_25 WA -
testcase_26 AC 2 ms
4,376 KB
testcase_27 AC 1 ms
4,380 KB
testcase_28 AC 2 ms
4,376 KB
testcase_29 AC 2 ms
4,376 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:185:27: warning: ‘r’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     for (int i = 0; i < 10-((r+1)-50); i++) cout << "0";
                         ~~^~~~~~~~~~~
main.cpp:170:3: warning: ‘l’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   if (l == 50) {
   ^~
main.cpp:141:7: warning: ‘p’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       if (i <= p) {
       ^~

ソースコード

diff #

#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <functional>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cctype>
#include <string>
#include <cstring>

using namespace std;

typedef long long ll;

bool compare(const long double a, const long double b) {
  return fabsl(a) < fabsl(b);
}

int main() {
  int n;
  cin >> n;
  vector<string> a, b;
  int ans[100] = {0}, bbb[100] = {0};
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    if (s[0] == '-') {
      b.push_back(s.substr(1));
    }else {
      a.push_back(s);
    }
  }

  for (int i = 0; i < a.size(); i++) {
    bool ok = false;
    for (int j = 0; j < a[i].size(); j++) {
      if (a[i][j] == '.') {
        ok = true;
        string t = "";
        for (int k = 0; k < 50-j; k++) t += "0";
        a[i] = t+a[i].substr(0, j)+a[i].substr(j+1);
        int n = a[i].size();
        for (int k = 0; k < 100-n; k++) a[i] += "0";
      }
    }
    if (!ok) {
      int n = a[i].size();
      string t = "";
      for (int j = 0; j < 50-n; j++) t += "0";
      a[i] = t+a[i];
      n = a.size();
      for (int j = 0; j < 100-n; j++) a[i] += "0";
    }
  }
  for (int i = 0; i < b.size(); i++) {
    bool ok = false;
    for (int j = 0; j < b[i].size(); j++) {
      if (b[i][j] == '.') {
        ok = true;
        string t = "";
        for (int k = 0; k < 50-j; k++) t += "0";
        b[i] = t+b[i].substr(0, j)+b[i].substr(j+1);
        int n = b[i].size();
        for (int k = 0; k < 100-n; k++) b[i] += "0";
      }
    }
    if (!ok) {
      int n = b[i].size();
      string t = "";
      for (int j = 0; j < 50-n; j++) t += "0";
      b[i] = t+b[i];
      n = b.size();
      for (int j = 0; j < 100-n; j++) b[i] += "0";
    }

  }
   

  int c = 0;
  for (int i = 0; i < a.size(); i++) {
    c = 0;
    for (int j = 99; j >= 0; j--) {
      int t = ans[j];
      a[i][j] = a[i][j] != 0 ? a[i][j] : '0';
      ans[j] = (ans[j]+(a[i][j]-'0')+c)%10;
      c = (t+(a[i][j]-'0')+c)/10;
    }
  }
  for (int i = 0; i < b.size(); i++) {
    c = 0;
    for (int j = 99; j >= 0; j--) {
      int t = bbb[j];
      b[i][j] = b[i][j] != 0 ? b[i][j] : '0';
      bbb[j] = (bbb[j]+(b[i][j]-'0')+c)%10;
      c = (t+(b[i][j]-'0')+c)/10;
    }
  }

  // for (int i = 0; i < 100; i++) cout << ans[i];
  // cout << endl;
  // for (int i = 0; i < 100; i++) cout << bbb[i];
  // cout << endl;

  
  bool ok = false;
  for (int i = 0; i < 100; i++) {
    if (ans[i] < bbb[i]) {
      ok = true;
    }else if (ans[i] > bbb[i]) {
      break;
    }
  }
  if (ok) {
    for (int i = 0; i < 100; i++) {
      int t = ans[i];
      ans[i] = bbb[i];
      bbb[i] = t;
    }
  }

  int p;
  for (int i = 0; i < 99; i++) {
    if (ans[i] > 0) {
      p = i;
      break;
    }
  }
  
  bool minus = false;
  c = false;
  for (int i = 99; i >= 0; i--) {
    if (ans[i]-bbb[i]-c < 0) {
      if (i <= p) {
        minus = true;
        ans[i] = bbb[i]-(ans[i]-c);
        c = false;
      }else {
        ans[i] = 10-(bbb[i]-(ans[i]-c));
        c = true;
      }
    }else {
      ans[i] = ans[i]-bbb[i]-c;
      c = false;
    }
  }

  int l, r;
  for (int i = 0; i < 100; i++) {
    if (ans[i] > 0) {
      l = i;
      break;
    }
  }
  for (int i = 100; i >= 0; i--) {
    if (ans[i] > 0) {
      r = i;
      break;
    }
  }

  if (!(minus && ok) && (minus || ok)) cout << "-";
  if (l == 50) {
    cout << "0";
  }
  for (int i = l; i <= r; i++) {
    if (i == 50) {
      cout << "." << ans[i];
    }else {
      cout << ans[i];
    }
  }
  if (r < 50) {
    for (int i = 0; i < 49-r; i++) cout << "0";
    cout << ".";
    for (int i = 0; i < 10; i++) cout << "0";
  }else {
    for (int i = 0; i < 10-((r+1)-50); i++) cout << "0";
  }
  cout << endl;
}
0