うさぎ同士のmaxNumberを入れ替えても、答えは変わらない => とりあえず昇順にソート
0番のうさぎに割り当てた番号以外を1番に割り当てる。
1番のうさぎに割り振る番号の選択肢は、maxNumber[1] - 1 通り。
同様に、2番のうさぎに割り当てる番号の選択肢は、0番と1番に割り振った数字以外。
つまり、maxNumber[2] - 2 通り。
i番のうさぎに割り当てる数字の選択肢は、maxNumber[i] - i 通り。
typedef long long lli; class RabbitNumbering { public: int theCount(vector <int> num) { sort( num.begin(), num.end() ); for(int i=0; i<num.size(); ++i){ num[i] -= i; } const lli mod = 1000000007; lli ret = 1; for(int i=0; i<num.size(); ++i){ if( num[i] <= 0 )return 0; ret *= num[i]; ret %= mod; } return ret; } };
0 件のコメント :
コメントを投稿