GAIさんへのお返事です。
> f(1)=1であるが、一般にf(n)=nとなるような、2番目に大きいnを求めよ。
!n=13の場合
!0,1,2,3,4,5,6,7,8,9,10,11,12,13より、「1」の数は6個となる。
!∴f(13)=6
OPTION ARITHMETIC NATIVE
LET fn=0 !1の数
FOR n=0 TO 2^31-1 !範囲
LET t=n !0~nを表現する
DO WHILE t>0 !各桁が1の数をかぞえる
IF MOD(t,10)=1 THEN LET fn=fn+1
LET t=INT(t/10)
LOOP
IF fn=n THEN PRINT "f(";n;")=";fn !f(n)=nのなら
NEXT n
END
実行結果
f( 0 )= 0
f( 1 )= 1
f( 199981 )= 199981 ← これ?
f( 199982 )= 199982
f( 199983 )= 199983
f( 199984 )= 199984
f( 199985 )= 199985
f( 199986 )= 199986
f( 199987 )= 199987
f( 199988 )= 199988
f( 199989 )= 199989
f( 199990 )= 199990
f( 200000 )= 200000
f( 200001 )= 200001
f( 1599981 )= 1599981
f( 1599982 )= 1599982
f( 1599983 )= 1599983
f( 1599984 )= 1599984
:
: