没有难度,遍历枚举计算即可。
#include <iostream> #include <vector> using namespace std; int main(){ int n = 0; cin >> n; vector<int> nums; int sum = 0; int res = 0; for (int i = 2; i <= n; i++) { for (int j = 1; j < i; j++) { if (i % j == 0) nums.push_back(j); } if (!nums.empty()) { for (vector<int>::iterator iter = nums.begin(); iter != nums.end(); iter++) { sum += *iter; } if (sum == i) res++; sum = 0; nums.clear(); } else { continue; } } cout << res << endl; return 0; }