メインコンテンツまでスキップ

AtCoder

Overview

AtCoder始め方

コンパイルエラーは文法のエラーでプログラムは実行されない 実行時エラーは内容のエラーでプログラムは強制終了される 論理エラーは内容のエラーでプログラムは正しく動いているように見えてしまう

競プロの本質

アルゴリズムと計算量

C++

割り算に注意

cout << 7 / 3 << endl; // 2
// 小数点以下を切り捨てないで計算してほしい場合、7.0 / 3.0のように.0をつけます。同様に7.0 / 3.5のような計算も行えます。

int main() {
cout << 7 % 3 << endl; // 1
cout << 4 % 5 << endl; // 4
}
// 7÷3=2 あまり 1
// 4÷5=0 あまり 4

除算の順序(割り算の順序)

多くの場合、割り算はできるだけ後の方で行うようにしたほうが正しい結果になります。

割り算/のある整数同士の計算では、切り捨てが行われるタイミングの違いで結果が異なることがあります。

たとえば3÷2×4を計算する場合、書き方によって2つの計算結果が考えられます。

3 / 2 * 4 → 1 * 4 → 4
3 * 4 / 2 → 12 / 2 → 6

ゼロ除算(ゼロの割り算)

0で割ると実行時エラーが発生する。

int main() {
cout << 3 / 0 << endl; // error
cout << 0 / 3 << endl; // OK 0
cout << 3 % 0 << endl; // error
cout << 0 % 3 << endl; // OK 0
}
  • 変数を同時に宣言
// 間にカンマをいれる
int a = 10, b = 5;

falsyな値

1をtrueで、0をfalseで表す

ポインタ

ポインタはメモリを直接扱うために用いられる。ポインタを用いることで複雑な操作を行うことができます。 ポインタを全く使わずにプログラムを書くこともできますが、ポインタを使うとシンプルに書ける場合や、効率よく動作するプログラムを書ける場合があります。

メモリのアドレスは整数値で表すことができます。 この整数値を扱うための型がポインタ型であり、ポインタ型の変数をポインタといいます。

プログラム上の変数はメモリ上に保存される メモリは巨大な配列のようなもの メモリ上の位置はアドレスという数値で識別される アドレスは配列の添字に対応 ポインタはアドレスを扱う整数型 ポインタの使い方

&変数で変数のアドレスを得ることができる 型 *ポインタ名でポインタを定義 *ポインタでポインタの指すメモリ領域へのアクセス(書き込み・読み込み)