回答編集履歴

2

追記

2019/04/17 09:23

投稿

episteme
episteme

スコア16614

test CHANGED
@@ -31,3 +31,39 @@
31
31
  呼ばれるたびに ans.clear(); でどうじゃろ。
32
32
 
33
33
  ※ マルチスレッドだとアレだけど。
34
+
35
+
36
+
37
+ [別解]
38
+
39
+ ```C++
40
+
41
+ template<typename OutputIterator>
42
+
43
+ OutputIterator AbundantNumber(int num, OutputIterator out) {
44
+
45
+ for (int i = 1; i <= num; ++i) {
46
+
47
+ if (IsAbundantNumber(i)) {
48
+
49
+ *out++ = i;
50
+
51
+ }
52
+
53
+ }
54
+
55
+ return out;
56
+
57
+ }
58
+
59
+
60
+
61
+ // call側はたとえば:
62
+
63
+ std::vector<int> result;
64
+
65
+ AbundantNumber(5, std::back_inserter(result));
66
+
67
+ // 結果は resultに入ってる。
68
+
69
+ ```

1

加筆

2019/04/17 09:23

投稿

episteme
episteme

スコア16614

test CHANGED
@@ -25,3 +25,9 @@
25
25
  }
26
26
 
27
27
  ```
28
+
29
+ なので解決策としては static std::vector<int> ans; しといて、
30
+
31
+ 呼ばれるたびに ans.clear(); でどうじゃろ。
32
+
33
+ ※ マルチスレッドだとアレだけど。