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 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

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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *