Nguồn đề bài: http://www.spoj.com/PTIT/problems/P143PROG/
1. Đề bài P143PROG spoj
Đi chợ về, mẹ mua một gói kẹo cho anh em Tèo. Mẹ bảo Tèo rằng đợi các em đi học về thì hãy chia, nhưng Tèo không nghe, cứ đòi ăn trước. Tèo chia đều kẹo cho tất cả anh em, nếu như chia không đều thì các phần nhiều hơn (nhiều hơn các phần còn lại 1 cái) sẽ dành cho những đứa bé hơn. Là anh cả nên Tèo chỉ lấy phần nhỏ nhất.
Khi lũ trẻ đi học về, chúng nhận phần của mình, nhưng nghi ngờ anh Tèo là người lấy phần nhiều nhất, vì vậy chúng đem đi hỏi mẹ xem gói kẹo ban đầu có tất cả bao nhiêu cái?
Các bạn hãy tính toán xem số lượng kẹo có thể có ban đầu nhỏ nhất và lớn nhất là bao nhiêu?
Input
Gồm 2 số nguyên n (2 <= n <= 15) và k (n <= k <= 100) lần lượt là những đứa trẻ trong gia đình của Tèo và số kẹo còn lại sau khi Tèo đã ăn hết phần của mình.
Output
In ra 2 giá trị số kẹo nhỏ nhất và lớn nhất có thể có ban đầu.
Example
Test 1:
Input:
2
5
Output:
9 10
Giải thích test 1:
Nếu ban đầu có 9 cái kẹo, Tèo sẽ lấy phần ít hơn là 4 cái, còn lại 5 cái. Nếu ban đầu có 10 cái kẹo,
Tèo sẽ lấy 1 nửa là 5 cái, còn lại 5 cái cho đứa em.
Test 2:
Input:
3
5
Output:
7 7
2. Code tham khảo P143PROG spoj PTIT
a. Code Pascal
const fi=''; type data=longint; var n,k:data; f:text; begin assign(f,fi); reset(f); read(f,n); read(f,k); close(f); if k mod (n-1) = 0 then write(n*(k div (n-1))-1,' ',n*(k div (n-1))) else write( k+(k div (n-1)),' ',k+(k div (n-1))); end.
b. Code c++
#include<iostream> using namespace std; long n,k; main() { cin>>n; cin>>k; if(k%(n-1)==0) cout<< (n*(k/(n-1))-1)<<" "<<n*(k/(n-1)); else cout<< k+(k/(n-1))<< " "<<k+(k/(n-1)); }