Hỏi về bài toán gia tốc

Coi vận tốc dao động gật ban đầu (lần 1) là 1 . Mỗi lần gật, vận tốc dao động lại tăng thêm. Cụ thể, ở lần gật thứ i , vận tốc dao động gật đầu lại tăng thêm 1/(1 + 2 + … + i) so với vận tốc ban đầu. Hãy xác định vận tốc sau n lần gật!

Input

Dòng đầu tiên ghi số T ( T ≤ 39 ) là số test. Mỗi test gồm 1 dòng duy nhất ghi số nguyên n ( 0 < n ≤ 2*10^6 ) chỉ số lần gật.

Output

Với mỗi test, hãy in trên 1 dòng vận tốc sau n lần gật, theo tỉ lệ với vận tốc ban đầu. Hãy in tử số và mẫu số tối giản của tỉ lệ đó.

Sample

Input

2
1
3

Output

1 1
3 2

Mọi người giúp em thuật toán bài này với. Tính gia tốc của nó thì được chứ đến đoạn chuyển thành phân số thì em chịu ạ!!!

Đây là bài toán mà bạn :slight_smile: đầu tiên nhận dạng biểu thức trong dấu ngoặc, sau đó nghịch đảo nó và magic :smiley:

3 Likes

Vậy ra chuyển từ số thập phân sang phân số thì làm vậy à

Tìm tử số mẫu số tối giản thì chia cả tử và mẫu cho ƯCLN của chúng.

4 Likes

Cái đó thì mình biết rồi nhưng mà vấn đề ở đây là phải chuyển từ số thập phân sang phân số ý

12.345 = 12345 / 1000 :point_right: rút gọn như cách của đen-trắng kun. :slight_smile:

4 Likes

chạy thử thì thấy kết quả:

1: 1/1
2: 4/3
3: 3/2
4: 8/5
5: 5/3
6: 12/7
7: 7/4
8: 16/9
9: 9/5
10: 20/11

vậy cũng ko cần tìm ucln rồi rút gọn gì đâu =]

  • nếu n chẵn thì in 2n và n+1
  • nếu n lẻ thì in n và (n+1)/2

tổng kia là 2n/(n+1), mà n và n+1 là 2 số nguyên liên tiếp sẽ nguyên tô cùng nhau, vậy ucln của tử và mẫu chỉ có thể là 2, xảy ra khi n lẻ, nên n lẻ thì in n và (n+1)/2 là được

6 Likes

Gọi vận tốc tại thời điểm thứ i là v[i], ta có delta_v[i] = 1 / (1 + 2 + ... + i) = 2 / ((i+1) * i) = 2 * (i+1)_(-2)
=> v[i] = C - 2/(i+1) (*)
Thay i = 1 vào (*) ta có 1 = C - 2/2 => v[n] = 2 - 2/(n+1) :smiley:

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?