乙個袋子裡面有n個球,每個球上面都有乙個號碼(擁有相同號碼的球是無區別的)。如果乙個袋子是幸運的當且僅當所有球的號碼的和大於所有球的號碼的積。
例如:如果袋子裡面的球的號碼是,這個袋子就是幸運的,因為1 + 1 + 2 + 3 > 1 * 1 * 2 * 3
你可以適當從袋子裡移除一些球(可以移除0個,但是別移除完),要使移除後的袋子是幸運的。現在讓你程式設計計算一下你可以獲得的多少種不同的幸運的袋子。
輸入描述:
第一行輸入乙個正整數n(n ≤ 1000)第二行為n個數正整數xi(xi ≤ 1000)
輸出描述:
輸出可以產生的幸運的袋子數
輸入例子:
31 1 1
輸出例子:
2
c++**:
#include #include #include using namespace std;
// 注釋部分去掉可以用於記錄滿足條件的序列
void combination(vector::iterator begin, const vector::iterator& end,
unsigned int& cursum, unsigned int& curmul, unsigned int& counts/*, vector& v*/)
cursum -= *begin;
curmul /= *begin;
// v.pop_back();
unsigned int num = *begin;
while(num == *begin)
++begin;
combination(begin, end, cursum, curmul, counts/*, v*/);
}int getluckbags(vectorbag)
return counts;
}int main()
}return 0;
}
網易筆試程式設計題 幸運的袋子
題目描述 乙個袋子裡面有n個球,每個球上面都有乙個號碼 擁有相同號碼的球是無區別的 如果乙個袋子是幸運的當且僅當所有球的號碼的和大於所有球的號碼的積。例如 如果袋子裡面的球的號碼是,這個袋子就是幸運的,因為1 1 2 3 1 1 2 3 你可以適當從袋子裡移除一些球 可以移除0個,但是別移除完 要使...
幸運的袋子
乙個袋子裡面有n個球,每個球上面都有乙個號碼 擁有相同號碼的球是無區別的 如果乙個袋子是幸運的當且僅當所有球的號碼的和大於所有球的號碼的積。例如 如果袋子裡面的球的號碼是,這個袋子就是幸運的,因為1 1 2 3 1 1 2 3 你可以適當從袋子裡移除一些球 可以移除0個,但是別移除完 要使移除後的袋...
幸運的袋子
乙個袋子裡面有n個球,每個球上面都有乙個號碼 擁有相同號碼的球是無區別的 如果乙個袋子是幸運的當且僅當所有球的號碼的和大於所有球的號碼的積。例如 如果袋子裡面的球的號碼是,這個袋子就是幸運的,因為1 1 2 3 1 1 2 3 你可以適當從袋子裡移除一些球 可以移除0個,但是別移除完 要使移除後的袋...