A363962 a(1)=1; for n > 1, if n appears in the sequence then a(n) = lastindex(n), where lastindex(n) is the index of the last appearance of n. Otherwise a(n) = a(n-1) - n unless that result is already in the sequence or would be negative; otherwise, a(n) = a(n-1) * n.
1, 2, 6, 24, 19, 3, 21, 13, 4, 40, 29, 17, 8, 112, 97, 81, 12, 216, 5, 100, 7, 154, 131, 4, 100, 74, 47, 1316, 11, 330, 299, 267, 234, 200, 165, 129, 92, 54, 15, 10, 410, 368, 325, 281, 236, 190, 27, 1296, 1247, 1197, 1146, 1094, 1041, 38, 2090, 2034, 1977, 1919, 1860, 1800, 1739, 1677, 1614
Offset: 1
Keywords
Examples
a(6) = 3, as a(3) = 6 = n, thus a(6) = 3. a(28) = 1316 because subtracting 28 from the previous term (47) would give 19, which is already in the sequence, so multiply 47 by 28 to get 1316. a(100) = 25, as a(25) = 100 = n, thus a(100) = 25.
Programs
-
MATLAB
function a = A363962( max_n ) a = 1; for n = 2:max_n r = find(a == n,1,'last'); if ~isempty(r) a(n) = r; else k = a(n-1) - n; if k > 0 && isempty(find(a == k, 1)) a(n) = k; else a(n) = a(n-1) * n; end end end end % Thomas Scheuerle, Jul 03 2023
-
Mathematica
a[1] = 1; a[n_] := a[n] = Module[{s = Array[a, n - 1], a1}, If[MemberQ[s, n], Position[s, n][[-1, 1]], a1 = a[n - 1] - n; If[a1 < 0 || MemberQ[s, a1], a[n - 1]*n, a1]]]; Array[a, 100] (* Amiram Eldar, Jul 23 2023 *)