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ログ:0010 - ABC 081 A

Last updated at Posted at 2021-07-08

問題

問題文

すぬけ君は $1, 2, 3$ の番号がついた $3$ つのマスからなるマス目を持っています。 各マスには $0$ か $1$ が書かれており、マス $i$ には $s_i$ が書かれています。
すぬけ君は $1$ が書かれたマスにビー玉を置きます。 ビー玉が置かれるマスがいくつあるか求めてください。

制約

・$s_1, s_2, s_3$ は 1 あるいは 0

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

回答

回答1 (AC)

$s_i$ の値を変数 s に取り込み、i 文字目 s.at(i) に $1$ が書かれているかどうかをチェックし、見つけた個数 answer え出力します。以下のコードでACとなりました。

abc081a-1.cpp
#include <bits/stdc++.h>
using namespace std;
 
int main() {
  string s;
  cin >> s;
 
  int answer = 0;
  for ( int i=0; i<3; i++ ) {
    if ( s.at(i)=='1' ) {
      answer += 1;
    }
  }
  cout << answer << endl;
}

回答2 (AC)

文字列の長さが $3$ であることに着目し、文字列そのものを判断して答えを出力するようにしてみました。

abc081a-2.cpp
#include <bits/stdc++.h>
using namespace std;
 
int main() {
  string s;
  cin >> s;
 
  if ( s=="111" ) {
    cout << 3 << endl;
  } else if ( s=="011" || s=="101" || s=="110" ) {
    cout << 2 << endl;
  } else if ( s=="100" || s=="010" || s=="001" ) {
    cout << 1 << endl;
  } else {
    cout << 0 << endl;
  }
}

調べたこと

[AtCoder に登録したら次にやることの解説] (https://qiita.com/drken/items/fd4e5e3630d0f5859067#%E7%AC%AC-2-%E5%95%8F--abc-081-a---placing-marbles-100-%E7%82%B9)

A 問題は for 文を使わなくても解けるようになっていることを示すために、for 文を使わずに、インライン展開した方法が紹介されていました。

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

こちらも for 文を使わない方法が紹介されていました。

学んだこと

  • C++ の標準入力 (文字型)

リンク

前後の記事

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?