Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Chu kỳ của thanh ghi LFSR

    Xét thanh ghi dịch phản hồi tuyến tính (LFSR) Fibonacci độ dài LLL như mô tả trong bài "Sinh dãy bit từ LFSR": trạng thái là LLL bit ở các vị trí 1,…,L1,\ldots,L1,…,L; mỗi bước, bit phản hồi mới fff = XOR các bit tại các vị trí tap của trạng thái hiện tại, sau đó dịch trái và chèn fff vào vị trí cuối.

    Đề bài đảm bảo tập tap luôn chứa vị trí 111. Khi đó phép chuyển trạng thái là một song ánh trên không gian 2L2^L2L trạng thái, do đó xuất phát từ seed khác không, dãy trạng thái chắc chắn sẽ quay trở lại đúng seed ban đầu sau một số bước hữu hạn.

    Gọi TTT là chu kỳ — số bước dịch nhỏ nhất để trạng thái quay lại đúng trạng thái ban đầu (seed). Hãy tính TTT.

    Ví dụ: L=4L=4L=4, seed = 1000, tap ={4,1}=\{4,1\}={4,1} (đa thức nguyên thủy x4+x+1x^4+x+1x4+x+1) cho chu kỳ tối đại T=24−1=15T = 2^4 - 1 = 15T=24−1=15.

    • Định dạng đầu vào:
      • Dòng 1: số nguyên LLL (1≤L≤201 \le L \le 201≤L≤20).
      • Dòng 2: chuỗi seed gồm đúng LLL ký tự 0/1, khác toàn số 0.
      • Dòng 3: số nguyên kkk (1≤k≤L1 \le k \le L1≤k≤L).
      • Dòng 4: kkk số nguyên phân biệt trong [1,L][1, L][1,L] là các vị trí tap; đảm bảo danh sách này luôn chứa giá trị 111.
    • Định dạng đầu ra:

      In ra một số nguyên duy nhất là chu kỳ TTT.

    Ví dụ:

    Đầu vào:

    4
    1000
    2
    4 1
    

    Đầu ra:

    15
    

    Đầu vào:

    3
    001
    2
    3 1
    

    Đầu ra:

    7
    

    Đang tải editor...