解题思路:
用递归,思路就像线性筛素数
注意事项:
参考代码:
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h> #define N 100000 using namespace std; bool vis[N + 2]; int getDSum(int n) { int bak = n; int sum = 0; while (n) { sum += n % 10; n /= 10; } return sum += bak; } void d(int cur, const int max) { if (cur > max) return; else { int n = getDSum(cur); if (!vis[n]) { vis[n] = true; d(n, max); } return; } } int main(int argc, char** argv) { int n = 0, maxN = 0; cin >> n; for (int i = 1; i < n; i++) d(i, n); for (int i = 1; i < n; i++) if (!vis[i]) cout << i << endl; return 0; }
0.0分
1 人评分