[AtCoder]ABC 081 PlacingMarbles ~ 90 [C++]

プログラミング

ABC 081A – Placing Marbles

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  string n;
  cin >> n;
  
  cout << count(n.begin(), n.end(), '1') << endl;
}

countは文字列にしか使えないので注意です。

ABC 082A – Round Up the Mean

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  float a, b;
  cin >> a >> b;

  int x = round((a + b) / 2);
  
  cout << x << endl;
}

変数の型の指定をfloatにしています。intを使ってしまうと、roundを使う前に数字が丸まってしまうので、うまくいきません。

round関数
四捨五入をします。標準ライブラリ関数です。
例えば、小数点第2位で四捨五入をしたい時は以下のように書きます。
std::cout << std::round(3.154 * 100) / 100 << std::endl;

ABC 083A – Libra

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int a, b, c, d;
  cin >> a >> b >> c >> d;

  if (a + b > c + d){
    cout << "Left" <<endl;
  }else if (a + b < c + d){
    cout << "Right" <<endl;
  }else {
    cout << "Balanced" <<endl;
  }
}

a+bとc+dを比べればいいですね。

ABC 084A – New Year

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n;
  cin >> n;
  
  cout << (24 - n) + 24 << endl;
}

24からnを引いて、31日分の24時間を足してあげればいいですね。

ABC 085A – Already 2018

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  string s;
  cin >> s;
  
  cout << s.replace(3, 1, "8") << endl;
}

replace関数
文字列を置き換えることができます。
str.replace(開始位置, 長さ, 文字列)
という形で使います。
以前使った時は、正規表現を用いていましたが、正規表現ではなく、位置を指定して使うこともできます。

ABC 086A – Product

自分の回答

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

AtCoder Beginners Selectionでも解きましたね。

ABC 087A – Buying Sweets

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n, a, b;
  cin >> n >> a >> b;
  
  cout << (n - a) % b << endl;
}

一見複雑そうに見えますが、紐解くとそんなことはありません。
最初に、a円のケーキを1個買うので、nからaを引きます。そして、その余った金額をbで割り、その余りを出力すれば答えとなります。余りを出力するには%を使います。

ABC 088A – Infinite Coins

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n, a;
  cin >> n >> a;

  if (n % 500 <= a){
    cout << "Yes" << endl;
  }else {
    cout << "No" << endl;
  }
}

500円玉は無限に持っているので、まずは金額nを500で割ってしまいます。その余りのを1円玉で払うことになるので、余りと1円玉の枚数aを比べて、aの方が大きかったら、払えるので”Yes”を出力すれば良いですね。

ABC 089A – Grouping 2

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n;
  cin >> n;

  cout << n / 3 << endl;
}

生徒の数nを3で割った答えを出力すれば良いですね。

ABC 090A – Diagonal String

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  string a, b, c;
  cin >> a >> b >> c;

  cout << a[0] << b[1] << c[2] << endl;
}

それぞれの行をa,b,cに振り分けて、該当する番号のところを出力すれば良いですね。

タイトルとURLをコピーしました