SRM601 div2 Med WinterAndCandies

問題概要

・i番目のキャンディーのタイプはa_i

・タイプが1,2,3...,Kまで1つずつになるようにキャンディーを選ぶ選び方は何通りか

方針

・K = 1の時

1の個数

・K = 2の時

1の個数×2の個数

・K = xの時

1の個数×2の個数×...×xの個数

となるのでこれらを全て足した値が答え。

コード

class WinterAndCandies {
  public:
    int getNumber(vector <int> type) {
      int ret = 0;
      int num[51]; CLR(num);
      FOR(i,0,(int)type.size()) {
        num[type[i]]++;
      }
      int t = 1;
      FOR(i,1,51) {
        t *= num[i];
        ret += t;
      }
      return ret;
    }
};