P133SUMF spoj PTIT – cấp số cộng
Nguồn đề bài: http://www.spoj.com/PTIT/problems/P133SUMF/ 1. Đề bài P133SUMF spoj Tí đã viết được 4 số tạo thành một cấp số cộng, theo yêu cầu của cô giáo. Nhưng giờ ra chơi, Tèo lại xỏ đểu bạn của mình bằng cách xóa đi một số, rồi viết theo thứ tự ngẫu nhiên 3 số còn lại. Các ...
Nguồn đề bài: http://www.spoj.com/PTIT/problems/P133SUMF/
1. Đề bài P133SUMF spoj
Tí đã viết được 4 số tạo thành một cấp số cộng, theo yêu cầu của cô giáo. Nhưng giờ ra chơi, Tèo lại xỏ đểu bạn của mình bằng cách xóa đi một số, rồi viết theo thứ tự ngẫu nhiên 3 số còn lại.
Các bạn hãy giúp Tí khôi phục lại số bị thiếu ban đầu.
Input
Gồm 3 số nguyên có giá trị tuyệt đối nhỏ hơn 1000.
Input luôn được đảm bảo để có đáp án.
Output
In ra số còn lại bị thiếu trong cấp số cộng. Nếu có nhiều đáp án, hãy in ra số lớn nhất.
Example
Test 1:
Input:
4 6 8
Output:
10
Test 2:
Input:
10 1 4
Output:
7
2. Hướng dẫn P133SUMF spoj PTIT – cấp số cộng
– đầu tiên bạn sắp xếp 3 số tăng dần.
– tính công sai d. Bạn có thể tính công sai bằng cách lấy chênh lệch nhỏ nhất của 2 số bất kì.
– sau đó duyệt tìm if A[i-1]+d<>a[i] then “a[i-1]+d” là kết quả bài toán (với i=2..3).
– ngược lại kết quả sẽ là A[3]+d
3. Code tham khảo P133SUMF spoj PTIT – cấp số cộng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | const fi='; type data=integer; var f:text; A:array[1..3] of data; n:data; i,j,tmp,min:data; procedure xuli; var i:data; begin for i:=2 to 3 do if min+a[i-1]<>a[i] then begin writeln(min+a[i-1]); exit; end; writeln(a[3]+min); end; begin assign(f,fi); reset(f); n:=3; for i:=1 to 3 do read(f,a[i]); close(f); for i:=1 to 3 do for j:=i+1 to 3 do if a[i]>a[j] then begin tmp:=a[i]; a[i]:=a[j]; a[j]:=tmp; end; min:=high(data); for i:=1 to 2 do if min>a[i+1]-a[i] then min:=a[i+1]-a[i]; xuli; end. |