プログラミングコンテスト
ABCコンテスト †
int a = 3;
/*
a = 5;
*/
cout << a << endl; // 3
int a = 5; a = 3; // a = 2; a = 1;
cout << a << endl; // 3
cout << 180/*cm*/ << endl;
int a = 0;
for (int i = 0; i < 10; i++) {
a++;
}
cout << a << endl; // 10
for (int i = 0; i < 10; i++) {
int a = 0;
a++;
cout << a << endl; // どんな時も1
}
// cout << a << endl; // そしてここでaを出そうとするとコンパイルエラー
int a[2][3] = {};
a[0][0] = 0;
a[1][2] = 1;
// a[2][2] = 0; // メモリバイオレーション!
sort(arr.begin(), arr.end())
map<string, int> a;
a["moesan"] = 5;
a["hamko"] = 24;
for (map<string, int>::iterator it=a.begin(); it!=a.end(); it++) {
cout << it->first << " => " << it->second << '\n';
}
- 6Bは、数学力いる。
- 8Bは、mapというSTLを使わないとかなりきつい。map使わないと、僕でもめんどい。ググって
- 9Bは、できなくないけど、かなりむつかしい。これはレギュラーコンテストのA問題レベル。
- 10Bは面白いし、もえさんもできる
- 11Bは、常に'A' < 'a';であることを知らないときつい。大文字のほうが、数字としては小さい。
- 7Cがめっちゃ良問
- 14B 二進数表記を、"0b"をはじめにつけるものと定義する。
int a = 3; // 0b00000000000000000000000000000011
int b = 10; // 0b00000000000000000000000000001010
- 以下、さすがに0がいっぱいで面倒なので、はじめの0はできるだけ省略して説明する。
- &→aとbで両方同じだったら1、違ったら0を出力
- |→どちらか片方にでも1があれば1、どっちも0なら0
- if (a & (1 << n))の意味は、「aのn bit目が1ならif文の中身を行う」
- a & (1 << n) の意味は、aのn bit目が0なら0、aのn bit目が1なら「2のn乗」
if (a & (1 << n)) {
cout << "n bit目は1" << endl;
} else {
cout << "n bit目は0" << endl;
}
cout << (a & b) << endl; // 0b0011 & 0b1010 = 0b0010
cout << (a | b) << endl; // 0b0011 | 0b1010 = 0b1011
cout << (1 << 2) << endl; // 0b0100
cout << (a & (1 << 5)) << endl; // aの左から5ビット目が0なら0, そうでないなら何らかの数字が入る。
- 17Bはちょい大変。以下を実行してみて、理解できれば多分OK
for (int i = 0; i < 100; i++) {
cout << i << endl;
if (i % 5 == 0)
i++;
}