[試験符号化/規格]NおよびM(3)


🔍NとM(3)


<質問>
自然数NとMが与えられた場合、以下の条件を満たすすべての長さMの数列を解くプログラムを作成します.
  • 1からNまで、自然水体中でM個の数列
  • を繰り返し選択する.
  • などの数字を複数回選択できます.
  • <入力>
    第1行は自然数NとMを与える.(1 ≤ M ≤ N ≤ 7)
    <出力>
    各行に問題条件を満たす数列を出力します.重複する数列は複数回出力できません.各数列はスペースで区切らなければなりません.
    数列は予め増加した順序で出力しなければならない.

    💡の意見を打診


    Python内部関数itertoolsのproductで問題を解決できると思います.

    💡テストに合格したコード

    from itertools import product
    N, M = map(int, input().split())
    P = product(range(1, N+1),repeat=M)  # iter(tuple)
    for i in P:
        print(' '.join(map(str, i)))  # tuple -> str

    Pythonの中でリストの中の値の繰り返しの順序を求めます


    🔗リファレンス
    https://juhee-maeng.tistory.com/91
    製品(=重複シーケンス)
  • 製品(重複可能オブジェクト、repeat=1)
  • NおよびM(1)では、2つ以上のリストのすべての組合せを計算するために製品が使用され、重複シーケンスを計算する場合にも使用できます.
    >反復シーケンス
  • from itertools import product
    for i in product([1,2,3], repeat=2):
        print(i, end=" ")
    # (1, 1) (1, 2) (1, 3) (2, 1) (2, 2) (2, 3) (3, 1) (3, 2) (3, 3)
     
    >2つ以上のリストからすべての組合せを計算
    from itertools import product
    for i in product([1,2,3],'ab'):
        print(i, end=" ")
    # (1, 'a') (1, 'b') (2, 'a') (2, 'b') (3, 'a') (3, 'b')
    🔗Baekjun-NとM(3)
    https://www.acmicpc.net/problem/15651