« CÂU HỎI Tin học · Lớp $10$ $...$

Nhập vào hai số nguyên dương . $A$ và $B(A,B\leq10^9).$ Hãy tìm ƯCLN của A!và B!
rotate image
thumb up 1
thumb down
Trả lời câu hỏi của Katiee ୨୧
  • Câu trả lời phải chính xác, đầy đủ dựa trên kiến thức xác thực:
    • ✔ Đối với câu hỏi trắc nghiệm: Đưa đáp án lựa chọn + giải thích lý do chọn đáp án.
    • ✔ Đối với câu hỏi tự luận: Đưa lời giải và đáp án cho câu hỏi.
    • ✔ Đối với câu hỏi trả lời ngắn: Đưa ra đáp án + giải thích lý do.
    • ✔ Chấp nhận sử dụng ảnh do thành viên viết tay, ảnh cần rõ nét, không bị mờ, vỡ ảnh.
  • Sử dụng ngôn ngữ rõ ràng, dễ hiểu.
  • Tránh đưa ra các ý kiến cá nhân mang tính chất chủ quan.
  • Nếu sử dụng thông tin từ nguồn khác, phải trích dẫn nguồn đầy đủ và chính xác.
  • Tuyệt đối không được sao chép các thông tin từ các trang khác, từ AI hoặc chatGPT.
CÂU TRẢ LỜI
avatar
Timi

29/05/2026

Trợ lý học tập AI - Câu trả lời này chỉ mang tính tham khảo
Để tìm Ước chung lớn nhất (ƯCLN) của A! và B! với A, B là hai số nguyên dương, ta có thể sử dụng tính chất sau: - Gọi m = min(A, B) - Khi đó ƯCLN(A!, B!) = m! Lý do: Vì giai thừa của một số nguyên dương n là tích của tất cả các số từ 1 đến n, nên giai thừa của số nhỏ hơn sẽ là ước của giai thừa của số lớn hơn. Do đó, ƯCLN của A! và B! chính là giai thừa của số nhỏ hơn trong hai số A và B. Ví dụ: - A = 5, B = 7 - min(5,7) = 5 - ƯCLN(5!, 7!) = 5! = 120 Vậy bạn chỉ cần tính giai thừa của số nhỏ hơn trong hai số A và B là được kết quả. Bạn cần mình giúp viết code hoặc giải thích thêm không?
Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
avatar
level icon
Maiz Phạm

29/05/2026

Bản chất toán học

Giả sử ta có hai số nguyên dương $A$ và $B$. Không mất tính tổng quát, giả sử $A \le B$.

Khi đó, theo định nghĩa của giai thừa:

$A! = 1 \cdot 2 \cdot 3 \dots A$

$B! = 1 \cdot 2 \cdot 3 \dots A \cdot (A+1) \dots B$

Dễ dàng nhận thấy rằng $B!$ hoàn toàn chia hết cho $A!$ vì trong tích của $B!$ đã chứa sẵn toàn bộ tích của $A!$. Nói cách khác, $A!$ chính là một ước số của $B!$.

Vì $A!$ vừa là ước của chính nó, vừa là ước của $B!$, nên ước số chung lớn nhất của hai số này chính là số nhỏ hơn trong hai giai thừa.

Công thức tổng quát:

ƯCLN(A!,B!)=min(A,B)!\text{ƯCLN}(A!, B!) = \min(A, B)!


Giải thuật lập trình

Do đó, thuật toán để giải bài toán này cực kỳ tối ưu:

So sánh hai số $A$ và $B$ để tìm số nhỏ hơn (gọi là $N = \min(A, B)$).

Kết quả chính là $N!$.

Tuy nhiên, bạn cần lưu ý về cách hiển thị kết quả tùy thuộc vào yêu cầu của đề bài:

Nếu đề bài yêu cầu in ra giá trị cụ thể: Vì $A, B \le 10^9$ nên thông thường đề bài sẽ yêu cầu chia lấy dư cho một số nguyên tố lớn (ví dụ: $10^9 + 7$), lúc này bạn chỉ cần dùng một vòng lặp từ $1$ đến $N$ để tính giai thừa lấy dư.

Nếu đề bài chỉ cần dạng thu gọn: Bạn chỉ cần in ra chuỗi kết quả có định dạng N! (ví dụ: 5!).

Đoạn code minh họa (C++)

Dưới đây là cấu trúc code xử lý trong trường hợp tính kết quả theo modulo $10^9+7$:

C++

 

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    long long A, B;
    cin >> A >> B;
    
    // Tìm số nhỏ hơn
    long long N = min(A, B);
    
    // Tính N! theo modulo 10^9 + 7 (nếu đề bài yêu cầu giá trị cụ thể)
    long long mod = 1e9 + 7;
    long long ans = 1;
    
    for (int i = 1; i <= N; i++) {
        ans = (ans * i) % mod;
    }
    
    cout << ans << endl;
    
    return 0;
}

Độ phức tạp thuật toán: $\mathcal{O}(\min(A, B))$, hoàn toàn chạy tốt trong giới hạn thời gian nếu $\min(A, B) \le 10^7$. Trường hợp dữ liệu lớn hơn và không có modulo, thông thường kết quả đầu ra sẽ được yêu cầu giữ nguyên dưới dạng ký hiệu là min(A, B)!.

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
avatar
level icon
Nhân Irving

29/05/2026

Vì A và B là hai số nguyên dương, gọi M là số nhỏ hơn giữa A và B (M = min(A, B)). Khi đó, giai thừa của số lớn chắc chắn sẽ chia hết cho giai thừa của số nhỏ. Do ước chung lớn nhất của hai số chia hết cho nhau chính là số nhỏ hơn, ta có kết quả tổng quát:


UCLN(A!, B!) = min(A, B)!


Ví dụ: Nếu A = 3 và B = 5, thì UCLN(3!, 5!) = 3! = 1 x 2 x 3 = 6.

Hãy giúp mọi người biết câu trả lời này thế nào?
5.0/5 (1 đánh giá)
thumb up 1
thumb down
0 bình luận
Bình luận

Nếu bạn muốn hỏi bài tập

Các câu hỏi của bạn luôn được giải đáp dưới 10 phút

Ảnh ads

CÂU HỎI LIÊN QUAN

FQA.vn Nền tảng kết nối cộng đồng hỗ trợ giải bài tập học sinh trong khối K12. Sản phẩm được phát triển bởi CÔNG TY TNHH CÔNG NGHỆ GIA ĐÌNH (FTECH CO., LTD)
Điện thoại: 1900636019 Email: info@fqa.vn
location.svg Địa chỉ: Số 21 Ngõ Giếng, Phố Đông Các, Phường Đống Đa, Thành phố Hà Nội, Việt Nam.
Tải ứng dụng FQA
Người chịu trách nhiệm quản lý nội dung: Đào Trường Giang Giấy phép thiết lập MXH số 07/GP-BTTTT do Bộ Thông tin và Truyền thông cấp ngày 05/01/2024
Copyright © 2023 fqa.vn All Rights Reserved