Phương trình đồng dư

Đề bài

Mô tả

Cho bốn số nguyên a, b, p, x với p là số nguyên tố. Hãy đếm số nguyên dương n trong khoảng [1,x] thoả phương trình:

  • n·an≡b(modp).−

Dữ liệu vào

Một dòng duy nhất chứa bốn số nguyên a, b, p, x.

Dữ liệu ra

In ra một số nguyên — số lượng giá trị n thoả mãn.

Ràng buộc

  • 2≤p≤106+3, p là số nguyên tố.
  • 1≤a,b<p.
  • 1≤x≤1012.

Ví dụ

Input Output Giải thích
2 3 5 8 2 Hai giá trị n=2 và n=8 thoả mãn n·2n≡3(mod5).
4 6 7 13 1 Chỉ có n=6 thoả mãn (kiểm tra: 6·46=6·4096=24576≡6(mod7)).
233 233 10007 1 1 n=1 thoả mãn 1·233≡233(mod10007).

Ghi chú

Gợi ý: theo định lý Fermat nhỏ, ap−1≡1(modp), nên an tuần hoàn theo n với chu kỳ chia hết p−1. Kết hợp với điều kiện n(modp), có thể dùng định lý số dư Trung Hoa (CRT) để tìm tập các nghiệm n theo modulo p(p−1).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0