PDA

View Full Version : Mọi người gợi ý hướng làm bài này với! đề chỉ cho vậy thôi. không có giới hạn gì cả



tranthanh_ht
03-11-2011, 09:12 PM
Bài 5: Đổi chỗ (2 điểm)
Tìm số tự nhiên nhỏ nhất có chữ số hàng đơn vị là D, sao cho khi chuyển chữ số hàng đơn vị lên vị trí trước chữ số đầu tiên của số đó thì được số mới gấp K lần số cũ.
• Dữ liệu vào: Nhập từ tệp MOVE.INP gồm 2 số nguyên D và K, các số cách nhau tối thiểu một dấu cách.
• Kết quả: Ghi vào tệp MOVE.OUT số tìm được, hoặc -1 nếu không tìm được số thoả mãn.
Ví dụ

MOVE.INP MOVE.OUT
7 5 142857
lập trình bằng pascal

hieunghia
08-01-2012, 12:33 PM
Bài này đơn giản thôi bạn ạ. Hoàn toàn dựa vào toán học để làm. Tui có thể phân tích cho bạn về mặt toán học thế này nhé:
Gọi số phải tìm là aD (trong đó D là giá trị mà đề bài cho). Số đổi chỗ là Da.
Ta có phương trình: aD * k = Da <=> (a*10+D)*k = D * 10^p + a (trong đó p là số chữ số của a)
<=> a*10*k - a = D * 10^p - D*k
<=> (10*k - 1) * a = D * 10^p - D*k
<=> a = (D * 10^p - D * K) / (10 * K - 1)
Như vậy muốn tìm được a phải tìm được p. Do bài toán tìm số nhỏ nhất nên chỉ cần xét p = 0, 1, 2 , 3, ... nếu tìm được a nguyên thì dừng việc xét. Ta số nhỏ nhất sẽ là aD.
Không biết bạn đã học đến xử lý số lớn chưa? nếu chưa học đến xử lý số lớn thì chỉ cần xét p từ 0 đến 20. Còn nếu đã học xử lý số lớn rồi thì sẽ xét p từ 0 -> 20000 cũng ra coi như số lớn nhất sẽ có khoảng 21 chữ số.