Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
108677 | 廖悦扬 | 拆分自然数 | C++ | 解答错误 | 40 | 686 MS | 256 KB | 636 | 2023-11-04 09:15:17 |
#include <bits/stdc++.h> using namespace std; int n, ans; void dfs(string s, int lst, int sum) { if (sum == n) { cout << n << "=" << s << endl; ans++; return; } if (sum > n) return; for (int i=lst; i<n; i++) { string tmp; if (!s.empty()) tmp = s+"+"+(char)(i+'0'); else tmp = s+(char)(i+'0'); dfs(tmp, i, sum+i); } } int main() { // freopen("split.in", "r", stdin); // freopen("split.out", "w", stdout); cin >> n; if (n ==0) { cout << 0; return 0; } if (n ==1) { cout << "1=1" << endl; cout << "1"; return 0; } dfs("", 1, 0); cout << ans; return 0; }