1 solutions
-
0
C++ :
#include <iostream> #include <cstring> #include <cmath> #include <fstream> using namespace std; int nNum = 0; int nLim = 0; int* szValue = NULL; bool JudgeSum(const int& n) { int k = sqrt(n) + 1; for (int i = 2; i <= k; ++i) { if (n % i == 0) return false; } return true; } void InputData() { cin >>nNum >>nLim; szValue = new int[nNum + 1]; memset(szValue, 0, (nNum + 1) * sizeof(int)); for (int i = 0; i < nNum; ++i) { cin >>szValue[i]; } } void Search(int& nCnt, const int& n, const int& nPos, const int& nSum) { if (n == nLim) { if (JudgeSum(nSum)) ++nCnt; return; } for (int i = nPos; i < nNum; ++i) { Search(nCnt, n + 1, i + 1, nSum + szValue[i]); } } int CalcRes() { int nCnt = 0; Search(nCnt, 0, 0, 0); return nCnt; } int main() { InputData(); cout <<CalcRes(); delete []szValue; szValue = NULL; return 0; }
- 1
Information
- ID
- 666
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By