Bài đăng

BUỔI 1 HỌC ĐỘI TUYỂN

KIỂU DỮ LIỆU TRONG PASCAL Các kiểu số nguyên Tên kiểu Khoảng cách giá trị Dung lượng theo bytes Byte 0.. 255 1 Shortint -128.. 127 1 Smallint -32768.. 32767 2 Word 0.. 65535 2 Integer -32768.. 32767 2  [4] Longint -2147483648.. 2147483647 4 Longword 0.. 4294967295 4 int64 -9223372036854775808.. 9223372036854775807 8  [5] QWord 0.. 18446744073709551615 8  [6] Cardinal, Dword Tương đương với longword Các kiểu số thực Tên kiểu Khoảng cách Số chữ số có nghĩa Dung lượng theo bytes Real phụ thuộc vào nền tảng Không rõ 4 đến 8 Single 1.6E-45.. 3.4E38 7-8 4 Double 5.0E-324.. 1.7E308 15-16 8 Extended 1.9E-4932.. 1.1E4932 19-20 10 Comp -2E64+1.. 2E63-1 19-20 8 Currency -922337203685477.5808.. 922337203685477.5807 19-20 8 Kiểu chữ Tất cả các kiểu chữ đều có thể lưu được các ký tự trong bảng mã  ASCII Tên Số ký tự lưu được Dung lượng theo bytes Char 1 1 Widechar ? 2 String 255 ? Shortstring Tương tự String (255) ? Ansistring Tùy thuộc ...

Chương trình con trong pascal

Chương trình con Chương trình con ( CTC ) là một chương trình độc lập, xử lý một công việc nhất định nào đó trong chương trình chính, nó có chỉ có thể thực hiện được công việc đã được lập trình khi ở chương trình chính có lời gọi đến nó. Trong khi lập trình giải 1 bài toán, đôi khi chúng ta gặp phải những đoạn chương trình lặp đi lặp lại nhiều lần ở những phần xử lý khác nhau, để cho tiện lợi và không mất công, chúng ta định nghĩa 1 CTC với công việc được lập trình sẵn, khi cần thiết chỉ việc gọi chương trình con ra để làm việc mà không cần phải lập trình lại phần đã làm ở trên. Việc sử dụng CTC vô cùng tiện lợi và đảm bảo tính chặt chẽ của chương trình, thậm chí nhiều khi nếu không sử dụng CTC thì bài toán sẽ trở nên vô cùng rắc rối, và việc gỡ lỗi trong chương trình trở nên rất nan giải. Pascal cung cấp cho chúng ta 2 loại CTC là Procedure ( Thủ tục ) và Function ( Hàm ). Đây là hai chương trình con sẽ theo các bạn trong suốt quá trình học. Đây chính là cơ sở để khi các bạn ...

cộng trừ nhân chia phân số

Code cộng, trừ, nhân chia phân số trong pascal var a,b,c,d:longint; function ucln(a,b:longint):longint; var r:longint; begin while a mod b <>0 do begin r:=a mod b; a:=b; b:=r; end; exit(b); end; procedure cong(a,b,c,d:longint); var tu, mau,UC:longint; begin tu:=a*d+b*c; mau:=b*d; UC:=ucln(tu,mau); tu:=tu div uc; mau:=mau div uc; if mau=1 then writeln(a,'/',b,' + ',c,'/',d,' = ',tu) else writeln(a,'/',b,' + ',c,'/',d,' = ',tu,'/',mau); end; procedure tru(a,b,c,d:longint); var tu, mau,UC:longint; begin tu:=a*d-b*c; mau:=b*d; UC:=ucln(tu,mau); tu:=tu div uc; mau:=mau div uc; if mau=1 then writeln(a,'/',b,' - ',c,'/',d,' = ',tu) else writeln(a,'/',b,' - ',c,'/',d,' = ',tu,'/',mau); end; procedure nhan(a,b,c,d:longint); var tu, mau,UC:longint; begin tu:=a*c; mau:=b*d; UC:=ucln(tu,mau); if tu=0 then begin writeln(a,'/',b,...

ALARM - Đồng hồ báo thức

ALARM - Đồng hồ báo thức Mùa hè đến là lúc học sinh được nghỉ học, là khoảng thời gian tuyệt vời để vui chơi thỏa thích cùng nhau. Thế nhưng Huy - một học sinh lớp 10 chuyên Toán lại muốn tận dụng những ngày hè rảnh rỗi để "tu luyện" nhằm đạt kết quả cao trong kỳ thi VMO sắp tới. Cậu ta đặt ra một thời gian biểu cho mình và sử dụng đồng hồ báo thức để thực hiện một cách hợp lý. Sau một hồi lục lọi quanh nhà, cậu đã tìm được một chiếc đồng hồ báo thức hiển thị bằng đèn LED mà ba cậu mua cho từ năm ngoái. Không may, do ít sử dụng mà chiếc đồng hồ đã bị hỏng về phần hiển thị giờ. Nó hỏng đến nỗi cậu không thể đọc được thời gian trên đồng hồ mà chỉ đếm được số vạch LED mà nó hiển thị. Vì vậy, để xác định thời gian, cậu phải tìm một thời điểm mà đồng hồ hiện thị có số vạch LED bằng số vạch mà cậu đếm được. Do bận ôn thi, cậu không có thời gian suy nghĩ. Đây chính là lúc các NTU Coder giúp Huy đấy! Lưu ý: Hình của bài vừa được thay đổi, nếu bạn sai ở test 6 hãy xem lại hình ...

1CHIEU - Đường một chiều

1CHIEU - Đường một chiều       Thành phố X có hệ thống giao thông gồm n đường ngang và m đường dọc. Các đường ngang và đường dọc cắt nhau tạo thành n x m giao lộ (ngã hai, ngã ba, ngã tư) như hình bên dưới. Ban đầu các đường đều có thể chạy xe hai chiều nhưng sau một thời gian mật độ giao thông tăng lên nên phải bố trí tất cả các đường thành một chiều. Tuy nhiên phương án bố trí phải đảm bảo có đường đi giữa hai giao lộ bất kỳ (kể cả ngã hai). Bạn hãy giúp ban quản lý kiểm tra phương án đưa ra có thỏa mãn điều kiện này không nhé. Dữ liệu nhập: - Dòng đầu tiên là hai số nguyên n và m (1 ≤ n, m ≤ 100) - Dòng thứ hai gồm n ký tự L và R thể hiện phương án bố trí n đường ngang theo thứ tự từ trên xuống dưới. L là đường một chiều sang hướng trái và R là đường một chiều sang hướng phải. - Dòng thứ ba gồm m ký tự U và D thể hiện phương án bố trí m đường dọc theo thứ tự từ trái sang phải. U là đường mộ...

Xauduynhat - Xâu duy nhất

Xauduynhat - Xâu duy nhất        Cho một xâu kí tự chỉ gồm các kí tự chữ cái. Do yêu thích tính đơn nhất nên Nam muốn tìm ra một xâu con gồm các kí tự liên tiếp sao cho trong xâu này mỗi kí tự chỉ xuất hiện đúng 1 lần duy nhất.        Bạn được Nam nhờ giúp đỡ, hãy tìm giúp nam xâu đạt yêu cầu có độ dài lớn nhất sẽ là bao nhiêu. Input: -  Gồm một dòng duy nhất là xâu ban đầu S (độ dài <= 5*10 4 ) Output: -  Gồm một số duy nhất là đáp án tìm được. Ví dụ ·          input acbE output 4 var st,d:widestring; // =2^30 ki tu, ansistring=2^31 ki tu     i,j,max:longint; begin readln(st); max:=0;d:=''; for i:=1 to length(st)-1 do     for j:=i to length(st) do         if pos(st[j],d)=0 then d:=d+st[j]         else      ...

EZSORT - Sắp xếp là chuyện nhỏ!

EZSORT - Sắp xếp là chuyện nhỏ! Cho một dãy gồm n số nguyên dương a 1 , a 2 , a 3 , ..., a n  là một hoán vị của dãy các số từ 1 đến n. Ta có thể thực hiện thao tác biến đổi sau đây trên dãy: Chọn một phần tử a i  bất kỳ (1 <= i <= n) , sau đó xóa phần tử này khỏi dãy và chèn nó vào vị trí bên trái nhất của dãy . Hãy tìm số thao tác ít nhất để biến đổi dãy đã cho thành một dãy có giá trị tăng dần từ 1 đến n. Dữ liệu vào Dòng thứ nhất ghi số nguyên dương n n dòng tiếp theo, dòng thứ i ghi số a i Dữ liệu ra Ghi ra một số duy nhất là thao tác ít nhất để biến đổi dãy đã cho thành một dãy có giá trị tăng dần từ 1 đến n. Giới hạn 1 <= n <= 3x10 5 Ví dụ ·           input 8 5 6 7 8 1 2 4 3 output 4 //CONST   fi='EZSORT.INP';  fo='EZSORT.OUT'; VAR n,i,d:longint;    a:array[1..500000] of longint; BEGIN           readl...