P131SUMC PTIT spoj – SUM1 C – Quay bảng

Nguồn đề bài: http://www.spoj.com/PTIT/problems/P131SUMC/

1. Đề bài P131SUMC spoj

Perica rất giỏi toán. Điểm yếu của anh ấy là phép cộng và phép chia. Để giúp anh ấy, giáo viên cho anh ấy bài toán sau.

Cô giáo có hình vuông 2 x 2, chứa các số nguyên dương A, B, C và D.

Giá trị của bảng là: |A/C – B/D|.

Nhiệm vụ của Perica là tìm số lần nhỏ nhất của phép quay 90 độ theo chiều kim đồng hồ sao cho giá trị của bảng là lớn nhất.
Kết quả của một lần quay theo chiều kim đồng hồ được thể hiện ở bên dưới:

Input

Dòng đầu tiên của input chứa hai số nguyên A và B cách nhau một khoảng trống.
Dòng thứ hai của input chứa hai số nguyên C và D cách nhau một khoảng trống.
Tất cả các số nguyên đều dương và không lớn hơn 100.

Output

Một số nguyên duy nhất là đáp án của bài toán.

Example

Input:

Test 1:
1 2
3 4

Test 2:
5 9
7 2

Test 3:
41 99
100 13

Output:

Test 1: 2
Test 2: 0
Test 3: 1

2. Đề bài P131SUMC PTIT spoj

Bài này không có gì đặc biệt, chỉ xử lí bình thường thôi….

a. code pascal

const   fi='';
type    data=longint;
var
        P:array[1..4] of data;
        res:data;
        kq:real;
        f:text;

function tinh(a,c,b,d:data):real;
begin
        tinh:=abs(p[a]/p[c]-p[b]/p[d]);
end;

begin
        assign(f,fi);reset(f);
        read(f,p[1],p[2],p[3],p[4]);
        close(f);
        res:=0;
        kq:=tinh(1,3,2,4);
        if tinh(3,4,1,2)>kq then
                begin
                        kq:= tinh(3,4,1,2);
                        res:=1;
                end;
        if tinh(4,2,3,1)>kq then
                begin
                        kq:= tinh(4,2,3,1);
                        res:=2;
                end;
        if tinh(2,1,4,3)>kq then res:=3;
        writeln(res);
end.

b. Code c++

#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;

typedef int data;
data p[5],res=0;
float kq;

float tinh(int a,int c,int b,int d)
{
    return fabs(((float)p[a]/p[c]) -((float)p[b]/p[d]));
}

int main()
{
    scanf("%d %d %d %d",&p[1],&p[2],&p[3],&p[4]);
    kq=tinh(1,3,2,4);
    if (tinh(3,4,1,2)>kq)
    {
        kq=tinh(3,4,1,2);
        res=1;
    }
    if (tinh(4,2,3,1)>kq)
    {
        kq=tinh(4,2,3,1);
        res=2;
    }
    if (tinh(2,1,4,3)>kq) res=3;
    printf("%d",res);
    return 0;
}

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 *