Help us understand the problem. What is going on with this article?

AtCoderの入力、出力

AtCoderでC++やPythonでコードを書く際に、標準入力の処理に戸惑うので、整理

入力

C++

有限個の場合

int a,b,c;
cin>>a>>b>>c;

可変の場合:vectorを使う

#define rep(i,n) for (int i = 0; i < (n); ++i)
vector<int> a(n);
rep(i,n) cin >> a[i];

Python3

有限個の場合

a,b,c = map(int, input().split()))

可変の場合:listを使う

a = list(map(int, input().split()))

出力

C++

出力1

cout<<a<<" "<<b<<" "<<c<<endl;

出力2

printf("%d %d %d", a,b,c);

python3

print(c,a,b)

その他TIPS

・割り算は掛け算に変換する。C++やJavaは除算の切り捨てが発生するため、WA(Wrong Answer)の温床になりやすい。

再帰になれるために

DFS(Depth First Search,深さ優先探索)をする場合に、再帰の考え方が必要になる(スタックでもいいが)

問題
https://atcoder.jp/contests/abc165/tasks/abc165_c

<参考になった考え方>
再帰で意識すべきポイント1
再帰の1stepで何をしたら次に繋げられるか
ポイント2
終了条件をどうするか

RE(ランタイムエラー)になったときの、エラー箇所特定

【よくある質問】REの原因がわかりません => C/C++言語におけるmain関数の型、戻り値。ゼロ除算。配列の範囲外アクセス、などがあります。http://arc007.contest.atcoder.jp/faq#about_RE

今回は、Vectorの確保がでかすぎてエラーになっていた。

printf("1 1");return 0;

printfの中身は、適当な出力結果。これをREになる手前に挿入すると、回答がWA(Wrong Answer)になるため、どこでREになっているか追える。

連想配列(map)で、全キーに対して順番に処理したい

http://vivi.dyndns.org/tech/cpp/map.html

std::map<std::string, int> mp
    いろんな値を設定;
    for(auto itr = mp.begin(); itr != mp.end(); ++itr) {
        std::cout << "key = " << itr->first           // キーを表示
                        << ", val = " << itr->second << "\n";    // 値を表示
    }

https://atcoder.jp/contests/abc166/tasks/abc166_e
連想配列を使う問題で利用した。

その他参考

std::mapまとめ
https://qiita.com/_EnumHack/items/f462042ec99a31881a81

++iとi++の違い

https://stackoverflow.com/questions/24853/c-what-is-the-difference-between-i-and-i

a = ++i; //i=i+1してから、a=iする。
a = i++; //a=iしてから、i=i+1する。

long long を printf で表示する

%lldや%llxを使用する
http://nanoappli.com/blog/archives/3229

10^18 < LONG LONG < 10^19
10^9 < INT < 10^10

少数の掛け算はするな!

FROM ABC_169_C
誤差が発生するため。整数に直してから実施すること
https://drken1215.hatenablog.com/entry/2020/05/31/224300

もしくは少数のまま扱う場合は、long double型を使うこと。

参考

AtCoderで青色(8割以上のIT企業でアルゴリズム力はカンスト)になったので青になるまでに必要そうなことをまとめる
https://qiita.com/kami634/items/e452f804ba9d585a8b57
GitHubとVSCODEの連携方法
https://qiita.com/yu0313/items/4f95fc0b7e544c42e107
レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】
https://qiita.com/e869120/items/f1c6f98364d1443148b3
AtCoderで初めて色がつくまでの話(茶色) レートが中々上がらなかった原因
https://tech-blog.s-yoshiki.com/2018/11/778/
DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】
https://qiita.com/drken/items/4a7869c5e304883f539b
競プロ「これだけ5問!」
https://the-zeng.com/select5/

【競プロ】AtCoder早解きテクニック10選 (灰 ~ 緑コーダー向け)
https://qiita.com/xryuseix/items/7e9b4c6f12d001a0c0db

C++ 素因数分解して約数の個数を求める
https://pomupomu.hatenadiary.jp/entry/2019/01/03/114653

最速の素数判定プログラム C# Java C++
https://qiita.com/asksaito/items/76b71602dd956b79dbf7

Roe
AWS使ってる分析屋。日々の試行錯誤の個人的メモ。 書かれている内容は個人の見解であり、所属団体を代表するものではありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away