[伯俊]2605列Python


列に並ぶ


質問する


昼食の時間になると、クラス全員が並んで昼食を食べます.しかし、毎日前列に座っている学生たちは先に並んで昼食を食べ、後列に座っている学生は後列に並んで昼食を食べます.このような状況をどう変えるかを考えているうちに、先生は一つの方法を提案した.その方法は以下の通りである.
学生たちは1列に並んで、最初の学生から順番に番号を抽出します.1列目の学生は0番をもらって、一番前に並ばなければなりません.2行目の学生は0番か1番から1つの番号を抽出します.0番を選んでその場にいて、1番を選んで前の学生の前に並んでいます.3列目の学生は0、1または2の番号を取ります.そして引いた番号に従って前の位置に並びます.最後に並んだ学生もこのように前に並びます.一人一人が吸う番号は自分が最初に立った順番より小さい.
例えば、5人の学生が並んでいて、1番目に並んだ学生から5番目に並んだ学生まで、0、1、1、3、2番を順番に引いて、1番目の学生から5番目の学生まで、1から5まで、学生たちが並んでいる順番は以下の通りです.
  • 最初の生徒が番号を抜いた後:1
  • 2番目の生徒が番号を抜いた後:2.1
  • 3人目生徒抜去番号後:2.31
  • 4人目生徒抜去番号後:423.1
  • 5人目生徒抜去番号後:4 2 5 3 1
  • そのため、学生たちが最終的に並んだ順番は4、2、5、3、1だった.
    並んでいる学生に順番に番号を抽出する場合は、学生が最終的に並んでいる順番を出力するプログラムを作成してください.

    入力


    1列目は学生の数を与え、2列目は順番に学生たちが引いた番号を与える.学生数は100以下で、学生が引く番号は0か自然数で、学生が引く番号の間にスペースがあります.

    しゅつりょく


    学生たちが最初に並んだ順番で最初の列から番号をつけると、最初の列の学生たちは最終的にその番号に並んだ順番を出力します.学生番号の間にスペースを出力します.

    解決策


  • 新しい空のリストを作成し、リストを挿入します.

  • しかし、問題とは裏腹に、実施後はリストを覆した.
  • 0が最下位、1位、3位.

  • つまり、番号を引いたら、その番号のインデックスに入ります.

  • リストを並べ替えます.
  • n = int(input())
    lst = list(map(int,input().split()))
    lst2= []
    for i in range(n) :
        if lst[i] == 0 :
            lst2.insert(0,i+1)
        else :
            lst2.insert(lst[i],i+1)
    
    for i in reversed(lst2):
        print(i,end=' ')