0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderログ:0084 - ABC 121 B

Last updated at Posted at 2021-08-19

問題

問題文

$N$ 個のソースコードがあり、$i$ 個目のソースコードの特徴は $A_{i1},A_{i2},\ldots,A_{iM}$ の $M$ 個の整数で表されます。
また、整数 $B_1,B_2,\ldots,B_M$ と 整数 $C$ が与えられます。
$A_{i1}B_1+A_{i2}B_2+\ldots+A_{iM}B_M+C>0$ のときに限り、$i$ 個目のソースコードはこの問題に正答するソースコードです。
$N$ 個のソースコードのうち、この問題に正答するソースコードの個数を求めてください。

制約

・入力は全て整数である。
・$1 \le N,M \le 20$
・$−100 \le A_{ij} \le 100$
・$−100 \le B_i \le 100$
・$−100 \le C \le 100$

収録されている問題セット

回答

回答1 (AC)

$i$ 個目のソースコードが正答しているかどうかは、その特徴 $A_{i1},A_{i2},\ldots,A_{iM}$ に対して$A_{i1}B_1+A_{i2}B_2+\ldots+A_{iM}B_M+C$ を計算し、これが正ならば正答となります。この作業を繰り返して、正答の個数を求めれば良いでしょう。ソーソコードは以下のようになりました。

abc121b-1.cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
  int n, m, c;
  cin >> n >> m >> c;
  
  vector<int> b(m);
  for ( int j=0; j<m; j++ ) {
    cin >> b.at(j);
  }

  vector<vector<int>> a(n,vector<int>(m));
  for ( int i=0; i<n; i++ ) {
    for ( int j=0; j<m; j++ ) {
      cin >> a.at(i).at(j);
    }
  }

  int sum, answer = 0;
  for ( int i=0; i<n; i++ ) {
    sum = c;
    for ( int j=0; j<m; j++ ) {
      sum += a.at(i).at(j)*b.at(j);
    }
    if ( sum>0 ) {
      answer += 1;
    }
  }
  
  cout << answer << endl;
}

回答2 (AC)

回答1を少しだけ改良します。ソースコードの特徴 $a_{ij}$ は1回しか使わないので、わざわざ配列の保持するに必要がありません。cin で読み込んだらすぐに計算することで、全体の処理をスリムにすることが出来ます。コードは以下のようになりました。

abc121b-2.cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
  int n, m, c;
  cin >> n >> m >> c;
  
  vector<int> b(m);
  for ( int j=0; j<m; j++ ) {
    cin >> b.at(j);
  }

  int a, answer = 0;
  for ( int i=0; i<n; i++ ) {
    int sum = c;
    for ( int j=0; j<m; j++ ) {
      cin >> a;
      sum += a*b.at(j);
    }
    if ( sum>0 ) {
      answer += 1;
    }
  }
  
  cout << answer << endl;
}

調べたこと

AtCoder の解説コンテスト全体の解説

回答1と同じ方針でした。

リンク

前後の記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?