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に乗り換えようと思う。