啊啊啊啊啊
点击查看代码
#include <bits/stdc++.h>using namespace std;int main(){int n;cin >> n;set<int> ans;vector<int> path;function<void(int,int)> dfs = [&](int now,int sum){if(sum > n) return;if(sum < n && sum + now > n) return;if(sum == n){int res = 0;for(int i = 0;i < path.size();i ++ )for(int j = 0;j < i;j ++ )res += path[i] * path[j];ans.insert(res);return;}for(int i = now;i + sum <= n;i ++ ){path.push_back(i);dfs(i,sum + i);path.pop_back();}};dfs(1,0);cout << (int)ans.size();
}