mayoko’s diary

プロコンとかいろいろ。

SRM 489 div1 med:DiceRotation

問題:TopCoder Statistics - Problem Statement

解法:下の写真参考。各状態(1:1が上を向く 2:1が右を向く 3:1が奥を向く etc)からx方向,y方向に動かした時どう状態遷移するかを考える。最後に1になれば良いので,写真に書いてあるように赤,青,緑,橙のいずれかのように遷移をたどるしかない。それぞれの場合に題意のような遷移が何通りあるかを調べるだけ。
f:id:mayokoex:20150421084639j:plain

以下ソースコード

class DiceRotation {
public:
    int theCount(int gx, int gy) {
        int ret = 0;
        if (gx == 4) ret += gy+1;
        if (gy == 4) ret += gx+1;
        if (gx >= 2 && gy >= 2) ret += 2;
        return ret;
    }
};

sugimさんがunko(x, y)とかいう関数を作っていて汚かった。