見出し画像

プログラミング学習記録【22日目】/AtCoder Beginners Selection -1

PracticeA - Welcome to Atcoder

問題文
高橋くんはデータの加工が行いたいです。
整数a,b,cと、文字列sが与えられます。
a + b + c の計算結果と、文字列sを並べて表示しなさい。

これについては基礎中の基礎で、特段難しいこともないので早速ソースコードを作ってしまう。

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main()
{
   int a, b, c;
   string s;
   cin >> a;
   cin >> b >> c;
   cin >> s;
   cout << (a + b + c) << " " << s << endl;
   return 0;
}

画像1

ABC086A - Product

問題文
シカのAtCoDeerくんは2つの正整数a,bを見つけました。aとbの積が偶数か奇数かを判定してください。

出力は、奇数ならOdd 偶数ならEvenと出力する。
これに関しても特段難しいことはないので、早速コードを組んで見る。

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main()
{
   int a, b;
   cin >> a >> b;
   int c = a * b;
   if (c % 2 == 0)
   {
       cout << "Even" << endl;
   }
   else
   {
       cout << "Odd" << endl;
   }
}

画像2

ABC081A - Placing Marbles

問題文
スヌケくんは1、2、3の番号がついた3つのマスからなるマス目を持っている。各マスには"0"か"1"が書かれており、マスiにはsiが書かれている。
スヌケくんは"1"が書かれているマスにビー玉を置いた。ビー玉が置かれたマスはいくつになるか求めよ。

入力される数字が連続している点に注意。連続してなかったら配列で済むのだのだが、連続しているせいで配列での処理は難しい。
では、配列で何がしたかったのか。
もちろん、一文字ずつジャッジし、"1"だったら何かしらの変数に1プラスする、といった処理をしたかった。
つまり、このプログラムで肝になるのは、入力された文字を1文字ずつ切り離してジャッジを行う.at(i)の存在、ということになる。これを使えるのは配列の他に、文字列があった。つまり、文字列として入力を受け取れば解決するのだ。
これを用いて、コードを組み立てる。

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main()
{
   string a;
   cin >> a;
   int count = 0;
   rep(i, 3)
   {
       if (a.at(i) == '1')
       {
           count++;
       }
   }
   cout << count << endl;
}

画像3

おわり!

この記事が気に入ったらサポートをしてみませんか?