解いた問題

8/02/2011

SRM463 Div1 Easy

250
うさぎ同士の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 件のコメント :

コメントを投稿