Số chính phương

T

tjknghjk

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Câu 1:
Sau tiết học về ‘Số chính phương’, Minh rất thích thú và nghĩ ra một trò chơi để đố các bạn. Minh sẽ nghĩ ra một số nguyên dương bất kì và đố các bạn xem số đó có là tổng của 4 số chính phương hay không. Ví dụ: 53=2^2+2^2+3^2+6^2; 94=2^2+4^2+5^2+7^2.
Yêu cầu: Em hãy giúp các bạn của Minh tìm cách phân tích một số nguyên dương N thành tổng các bình phương của 4 số nguyên dương.
Dữ liệu vào: Từ file văn bản CAU1.INP gồm 1 dòng chứa số nguyên dương N (0<N<105).
Kết quả: Đưa ra file văn bản CAU1.OUT gồm 1 dòng ghi 4 số nguyên dương có tổng các bình phương bằng N. Nếu có nhiều cách phân tích thì chỉ đưa ra một cách. Nếu không phân tích được thì đưa ra số -1.
Ví dụ:
CAU1.INP CAU1.OUT CAU1.INP CAU1.OUT
53 2 2 3 6 9 -1
 
Last edited by a moderator:
L

lamdetien36

Câu 1:
Sau tiết học về ‘Số chính phương’, Minh rất thích thú và nghĩ ra một trò chơi để đố các bạn. Minh sẽ nghĩ ra một số nguyên dương bất kì và đố các bạn xem số đó có là tổng của 4 số chính phương hay không. Ví dụ: 53=22+22+32+62; 94=22+42+52+72.
Yêu cầu: Em hãy giúp các bạn của Minh tìm cách phân tích một số nguyên dương N thành tổng các bình phương của 4 số nguyên dương.
Dữ liệu vào: Từ file văn bản CAU1.INP gồm 1 dòng chứa số nguyên dương N (0<N<105).
Kết quả: Đưa ra file văn bản CAU1.OUT gồm 1 dòng ghi 4 số nguyên dương có tổng các bình phương bằng N. Nếu có nhiều cách phân tích thì chỉ đưa ra một cách. Nếu không phân tích được thì đưa ra số -1.
Ví dụ:
CAU1.INP CAU1.OUT CAU1.INP CAU1.OUT
53 2 2 3 6 9 -1
N nhỏ (N <= 105) => duyệt trâu O(N^3) :D
 
L

lamdetien36

bạn phải nói rõ ra chứ nêu không mình làm sau hiểu được mà ít nhất cúng viết rỗ duyệt gì đường viết kiểu duyệt trâu o như thế
Học lập trình thì phải biết duyệt trâu là gì chứ :D Tức là duyệt tất cả các khả năng có thể xảy ra, lấy kết quả cần tìm, thế thôi :D
Ở bài này duyệt 3 vòng for:
- for 1: a từ 1 -> sqrt(N)
- for 2: b từ a + 1 -> N - a * a
- for 3: c từ b + 1 -> N - a * a - b * b. Ở vòng for này ta tính d = N - a * a - b * b - c * c, nếu d chính phương thì thông báo kết quả (chú ý đặt d kiểu số thực).
Đơn giản mà :D
 
Top Bottom