未分類

ABC223〜AtCoder Beginner Contest 223〜

概要

AtCoder Beginner Contest 223 が開催されます。

配点は 100-200-300-400-500-500-600-600

振り返り

初参加。なんとなく大会の流れは掴めた。
基本文法やデータ変換で苦戦。あと、問題の意味を間違えた。キュー操作なのにソート版完成させて失敗。
もう少しいけるかなと思ったけど、悔しさをバネにがんばろうw

6,836人中の6,521位(笑

メモ

String形式

文字取得は.at(添字i)
文字列配列(vector<string> hairetu(添字i))はソート可能。
ソートは空配列も含まれる。

[]表記

#define _GLIBCXX_DEBUG

を書かないとエラーが表示されない[n]より.at(n)が推奨される。

論理演算

「!(真偽)」で記述

例>if( ! (n == 0))
{
#もしnが0でない場合
}

||もしくは(or)、&&かつ(and)

除算

N % 3 ⇨Nを3で割った余り。

 

エラーしがちポイント

  • 配列(vector<type> 変数名(添え字)   )

スニペット

  1. チェック用のロガーcoutは作っておくべき。
  2. cinを型に流し込むのも作っておくと楽そう

B問題

#include <bits/stdc++.h>
using namespace std;

int main()//文字列をキューっぽく操作して、abcd,cdab,bacd,cdab、で辞書順で最前・最後を取得
{
    string in;
    string tmp;
    int n;
    cin >> in;
    tmp = in;
    n = in.size();
    //cout << n << ',' << in << endl;
    vector<string> str(n); //配列にすべてのパターンを格納。配列サイズはnで指定。tmpはキュー変換後の仮保管。

    for (int x = 0; x < n; x++)    //0からn回ループ
    {
        tmp.at(0) = in.at(n - 1);    //n-1個目=最後尾、を0=最初に代入
        for (int i = 0; i < n - 1; i++)   //のこりの文字を一つづつ後ろに下げる。0からnー1回ループ
        {
            tmp.at(i + 1) = in.at(i);      //tmp1文字目=tmp.at(0)はすでに代入済みなので、i+1から。
            //      cout << i << ',' << tmp << ',' << in << endl;
        }
        str.at(x) = tmp;//配列にキュー移動させた文字列格納。
        in = tmp;
        //    cout << "str:" << str.at(x) << endl;
    }
    //  cout << tmp << endl;
    sort(str.begin(), str.end());         //ソートで辞書順に。
    reverse(str.begin(), str.end());      //
    //    cout << "min:" << str.at(n - 1) << endl;
    //    cout << "max:" << str.at(0) << endl;

    cout << str.at(n - 1) << endl;//min
    cout << str.at(0) << endl;    //max
    return 0;
}

解説を読んだメモ

アスタリスクでポインタ先の値参照(参考
std関数⇛
max_element(最初,最後)
mi_element(最初,最後)
str.substr(開始位置, 取り出す長さ);

A問題

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a; 
    cin >> a;  //in取得
    string c;
    if (a % 100 == 0 && !(a == 0)) //a÷100のあまり=0、かつ、aが0ではない場合
    {
        c = "Yes";
    }
    else
    {
        c = "No";
    }
    //cout << (a % 100 == 0) << ',' << !(a = 0);

    cout << c << endl;
}

-未分類