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; } };