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] Căn bậc hai modular

    Căn bậc hai modular (thuật toán Tonelli–Shanks)

    Cho số nguyên tố lẻ ppp, hãy tìm xxx thỏa:

    x2≡a(modp)x^2 \equiv a \pmod px2≡a(modp)

    Nghiệm tồn tại khi a≡0a\equiv0a≡0 hoặc aaa là thặng dư bậc hai (ký hiệu Legendre bằng 111). Khi p≡3(mod4)p\equiv3\pmod4p≡3(mod4) có công thức nhanh x=a(p+1)/4x=a^{(p+1)/4}x=a(p+1)/4; trường hợp chung dùng Tonelli–Shanks.

    Cho aaa, ppp. In nghiệm nhỏ hơn trong hai nghiệm {x,p−x}\{x, p-x\}{x,p−x}. Nếu vô nghiệm, in −1-1−1.

    Ví dụ

    x2≡2(mod7)x^2\equiv2\pmod7x2≡2(mod7): 32=9≡23^2=9\equiv232=9≡2 và 42=16≡24^2=16\equiv242=16≡2, nghiệm nhỏ hơn là 333.

    • Định dạng đầu vào:

      Một dòng gồm aaa và số nguyên tố lẻ ppp.

    • Ràng buộc đầu vào:

      0≤a<10180 \le a < 10^{18}0≤a<1018, ppp nguyên tố lẻ, 3≤p<10183 \le p < 10^{18}3≤p<1018.

    • Định dạng đầu ra:

      Nghiệm nhỏ hơn của x2≡ax^2\equiv ax2≡a, hoặc −1-1−1.

    Ví dụ:

    Đầu vào:

    2 7
    

    Đầu ra:

    3

    Giải thích:

    3^2=9≡2 và 4^2=16≡2 (mod 7); nghiệm nhỏ hơn là 3.

    Đang tải editor...