Code Formula 2014 予選B
Code Formula 2014 予選B に挑戦しました。
時間の都合が合わなかったので、問題を解き始めたのは、23時半から。
以下、結果報告。
A. サイコロ
腕ならし。今回は、エディタはVimを使用した。スニペットって便利。
#include <stdio.h> int main(void) { int a; scanf("%d", &a); printf("%d\n", 7-a); return 0; }
3:14で一発正答。早い人は、15秒ぐらいでコードを書き終えているので、これぐらいの難易度の問題は、1分程度で書けるようになりたい。
B. 11の倍数
Cで実装するのは面倒くさそうだったので、今回は勉強も兼ねて、C++で書いてみた。
まだまだ分からないことだらけだが、なんとかコードを完成させることが出来た。
#include <iostream> #include <cstdio> #include <vector> #include <algorithm> using namespace std; #define SZ(x) (int)(x.size()) int main(void) { string s; int even = 0; int odd = 0; cin >> s; reverse(s.begin(), s.end()); int k; for ( k = 0; k < SZ(s); k++ ) { int x = s[k]-'0'; if ( k % 2 == 1 ) { even += x; } else { odd += x; } } cout << even << " " << odd << endl; return 0; }
reverseで配列を反転できるのめっちゃ便利。
今回は、配列のサイズをマクロ定義したが、次回は、for構文もrepで定義してもっと簡潔に書けるようにしておこうと思う。
C++楽しい✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
C. 仲良し文字列
時間があれば追記。
D. お釣りの嫌いな高橋君
時間があれば追記。
総評
少し前に、vimでスニペットやオートコンプリートの設定をしていたので、コードを書くのが凄く楽になった。今後はサクラエディタからvimに乗り換えようと思う。