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