SRM 463 DIV1 Easy - RabbitNumbering ○

問題


http://community.topcoder.com/stat?c=problem_statement&pm=10697&rd=14148

複数のうさぎが存在し、すべてのうさぎに番号をつけたい。
それぞれのうさぎは違う番号をつける。
各うさぎはつけて欲しい番号の最大数を持っており、1~その最大数までの
いずれかの数字をつける。

このとき、うさぎの番号の付け方の総数を求める。

解き方


普通に考えると計算量がオーバーしてしまう。
各うさぎのmaxnumberでソートし、小さい数から順番に見ていくことで
総数を簡単に数えることができる。

コード


class RabbitNumbering {

public: int theCount(vector<int> maxNumber) {
int MOD=1000000007;
int n=maxNumber.size();
int ret=1;

sort(all(maxNumber));

FORE(i,0,n){
ret=(ret*1LL*(maxNumber[i]-i))%MOD;
}

return ret;
}

};

Share this

Related Posts

Previous
Next Post »