A360443 Smallest integer m > n such that the multiset of nonzero decimal digits of m is exactly the same as the multiset of nonzero decimal digits of n.
10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 101, 21, 31, 41, 51, 61, 71, 81, 91, 200, 102, 202, 32, 42, 52, 62, 72, 82, 92, 300, 103, 203, 303, 43, 53, 63, 73, 83, 93, 400, 104, 204, 304, 404, 54, 64, 74, 84, 94, 500, 105, 205, 305, 405, 505, 65, 75, 85, 95, 600
Offset: 1
Links
- M. F. Hasler, Table of n, a(n) for n = 1..1000
- Wikipedia, Permutation: Generation in lexicographic order, as of Feb. 2023.
Crossrefs
Programs
-
PARI
A360443(n)={forperm(concat(0,digits(n)),p,n||return(fromdigits(Vec(p))); n=0)} \\ M. F. Hasler, Feb 23 2023; similar idea also suggested by Ruud H.G. van Tol.
-
Python
# From Arthur O'Dwyer, edited by M. F. Hasler, Feb 22 2023 def A360443(n): s = '0' + str(n) i = next(i for i in range(len(s) - 1, 0, -1) if s[i-1] < s[i]) tail = s[i-1:] j = min((ch, j) for j, ch in enumerate(tail) if s[i-1] < ch)[1] s = s[:i-1] + tail[j] + ''.join(sorted(tail[:j] + tail[j+1:])) return int(s) for n in range(1, 100): print(n, A360443(n))
Comments