白駿4673号


私は一度だけ答えたが、答え直すのを忘れてしまった.
実はそんな問題がたくさんあります
問題は.


自分と各ビット数を加算した値をd(n)と呼ぶ.
nを作成者と呼ぶ.
ここでnの値がないことをセルフサービス番号と呼ぶ.
したがって,nと各ビット数を加算した値は自己符号化できない.
def self():
    n = 0
    li = []
    for i in range(0,10001):
        if i < 10:
            n = i + i
            li.append(n)
        
        elif i < 100:
            n = i + i//10 + i%10
            li.append(n)
        
        elif i < 1000:
            n = i + i//100 + (i%100)//10 + i%10
            li.append(n)
        
        elif i < 10000:
            n = i + i//1000 + i%1000//100 + i%100//10 + i%10
            li.append(n)
            
            if n <= 10001:
                li.append(n)

            li.sort()
    for j in range(0,10001):
        if j not in li:
            print(j)

self();
            
単純に考えたから「ノガダ」って言った
1から10001までのリストから、自作番号ではない数字を外しましょう.
ここでセルフサービス番号ではない数字は1桁10桁で加算された数ですよね?
だから自分と位置ごとの分解に1つの数を加えた値は1から10001までです
リストから削除すればいいです.
したがって、10を10で割るビット数が10未満、100未満の場合、
1000未満の場合、10000未満で割った場合、各ビット数のパーセントと余剰数が計算されます.
追加しました.
実際、これは関数を使わずに正解を得ることができる問題です.
関数から砲口を取り出し、砲口だけで計算しても正しい.
問題は関数に属するので、関数を使いましたが、なぜ関数を使わなければならないのでしょうか.
もっと経験を積めばわかるでしょう?