SLIDE1

Friday, January 30, 2015

[Olympic Tin Học] Đề Thi Sinh Viên Cao Đẳng 2014

Bài 1. Tính tổng (30 điểm)

Viết chương trình đọc vào hai số thực dương a và b và tính tổng tất cả các số nguyên 

không nhỏ hơn a và không lớn hơn b.

Dữ liệu: Vào từ file văn bản SUM.INP gồm một dòng chứa hai số thực dương a, b.

Kết quả: Đưa ra file văn bản SUM.OUT gồm một dòng chứa một số nguyên là tổng tất cả

các số nguyên không nhỏ hơn a và không lớn hơn b.

Ví dụ:

SUM.INP SUM.OUT

0.3 2.89

SUM.OUT
 3

Chú ý:

- Có 50% số test có 0 < a ≤ b ≤ 1000;

- Có 50% số test còn lại có 0 < a ≤ b ≤ 109


#include<stdio.h>
#include<stdlib.h>
void main()
{
float a,b;
long i,t=0;
FILE *in,*out;
in=fopen("SUM.INP ","r");
out=fopen("SUM.OUT ","w");
if(in==NULL || out==NULL)
{
printf("error");exit(0);
}
fscanf(in,"%f%f",&a,&b);
fprintf(in,"%f %f",a,b);
for(i=long(a);i<=long(b);i++)
if(i>=a && i<=b) t+=i;
fprintf(out,"%ld",t);
fcloseall();
}

Bài 2. Dãy số (30 điểm)

Cho dãy số gồm n số nguyên a1, a2, . . . , an. Một đoạn con của dãy đã cho là dãy ai

(1 ≤ i ≤ j ≤ n), dãy có độ dài (j − i + 1) và có trọng số bằng tổng (ai+. . . +aj). 

Yêu cầu: Tìm đoạn con có độ dài là một số chia hết cho 3 và có trọng số lớn nhất.

Dữ liệu: Vào từ file văn bản SEQ.INP có định dạng như sau:

 Dòng đầu ghi số nguyên n (n ≥ 3);

 Dòng thứ hai ghi n số nguyên a1, a2, . . . , an (|ai

Kết quả: Ghi ra file văn bản SEQ.OUT giá trị trọng số của đoạn con tìm được.

OLP’14 - Đề thi khối Cá nhân Cao đẳng Trang 1/2

Ví dụ:

SEQ.INP
11

SEQ.OUT
1 1 1 -9 1 1 1 1 -1 1 -9

Chú ý:

- Có 30% số test có n ≤ 300;

- Có 30% số test khác có n ≤ 3000;

- Có 40% số test còn lại có n ≤ 300000.


#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *in,*out;
in=fopen("SEQ.INP","r");
out=fopen("SEQ.OUT","w");
if(in==NULL || out==NULL)
{
printf("error");exit(0);
}
int n,i=0,j,k;
long a[100],max=-99999999,t;
fscanf(in,"%d",&n);
while(fscanf(in,"%ld",&a[i])!=EOF) i++;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if((j-i+1)%3==0)
{
t=0;
for(k=i;k<=j;k++) t+=a[k];
if(max<t)max=t;
}
fprintf(out,"%ld",max);
fcloseall();
}

Bài 3. Giao đấu hữu nghị (40 điểm)

Để tạo không khí vui vẻ náo nhiệt, trong buổi giao lưu giữa sinh viên các trường tham dự 

OLP – ACM, trường đăng cai OLP năm tới đề xuất tổ chức một cuộc thi đấu game online 

tay đôi giữa sinh viên trường mình với sinh viên trường sở tại. Mỗi trường cử ra một đội n

người, tạo thành n cặp đấu, sinh viên cùng trường không đấu với nhau. Trò chơi được chọn 

là một trò chơi rất phổ biến, được các bạn trẻ yêu thích, ai cũng biết và đã từng chơi nhiều 

trước đó. Mọi người đều biết chỉ số năng lực của mình trong trò chơi này và biết rằng nếu 

đấu tay đôi, ai có năng lực cao hơn sẽ thắng. Trong các trận đấu tay đôi, người thắng sẽ 

được 1 điểm, người thua – 0 điểm. Thời gian chơi được quy định đủ để phân biệt thắng 

thua. Các trận hòa sẽ kéo dài vô hạn và sẽ bị hủy kết quả khi hết thời gian.Với tinh thần 

fair play các bạn trường đề xuất ngồi vào vị trí thi đấu, truy nhập vào hệ thống và gửi về 

máy chủ chỉ số năng lực của mình. Trưởng đoàn của trường sở tại có 1 giây để xử lý thông 

tin, phân công ai đấu với ai để tổng số điểm thu được là lớn nhất.

Yêu cầu: Hãy xác định, với cách bố trí tối ưu các cặp đấu, đội của trường sở tại sẽ có bao 

nhiêu điểm.

Dữ liệu: Vào từ file văn bản FAIRPLAY.INP:

 Dòng đầu tiên chứa số nguyên n (1 ≤ n ≤ 105

 Dòng thứ 2 chứa n số nguyên a1, a2, . . . , an, trong đó ai – chỉ số năng lực của 

người thứ i thuộc đội của trường đề xuất, 1 ≤ ai ≤ 109

 Dòng thứ 3 chứa n số nguyên b1, b2, . . . , bn, trong đó bi – chỉ số năng lực của người 

thứ i thuộc đội của trường sở tại, 1 ≤ bi ≤ 109

Kết quả: Đưa ra file văn bản FAIRPLAY.OUT một số nguyên – số điểm đội trường sở tại 

có thể đạt được với cách bố trí cặp chơi tối ưu.

Ví dụ:

FAIRPLAY.INP

5

10 15 30 20 25

28 24 20 16 14

FAIRPLAY.OUT

4

Chú ý:

- Có 25% số test có n ≤ 3;

- Có 25% số test khác có n ≤ 8;

- Có 25% số test khác có n ≤ 1000;

- Có 25% số test còn lại có n ≤ 105


#include<iostream>
using namespace std;
#include<stdlib.h>
void doi(long &a,long &b)
{
long t=a;a=b;b=t;
}
void xep(long *a,int n)
{
for(int i=0;i<n-1;i++)
{
int m=i;
for(int j=i+1;j<n;j++)
if(a[m]>a[j])m=j;
doi(a[m],a[i]);
}
}
int maxdiem(FILE *t)
{
long a[100],b[100];
int n,i=0,j=0,max=0;
fscanf(t,"%d",&n);
while(i<n){ fscanf(t,"%ld",&a[i]);i++;}
i=0;
while(fscanf(t,"%ld",&b[i])!=EOF) i++;
xep(a,n);xep(b,n);
for(i=0;i<n;i++)
{
if(j==n) break;
while(j<n) if(b[j]>a[i]) {max++;break;} else j++;
}
return max;
}
void main()
{
int i,n;
long a;
FILE *in=fopen("FAIRPLAY.INP","r");
FILE *out=fopen("FAIRPLAY.OUT","w");
if(in==NULL || out==NULL) 
{
cout<<"error";exit(0);
}
fprintf(out,"%d",maxdiem(in));
fclose(in);fclose(out);
}


Related Posts:

  • lập trình c++ tính giá trị biểu thức toán họcviết chương trình tính giá trị của 1 biểu thức toán học thông thường với số thực, số nguyên đều được và các phép toán cộng + trừ - nhân * chia / và dấu ngoặc. thuật toán này được thiết kế code c++ bởi Trần Khánh Toàn, cái hay… Read More
  • [C++] điều khiển robot trong bản đồ Oxy U-D-L-R-T-BRobot đang đứng ở vị trí 0 0 trong bản đồ. Robot có thể nhận các lệnh L: về phía bên trái, R: về bên phải, U: tiến về phía trước, D: lùi ra sau, B: quay lại vị trí trước đó (lưu ý, nếu robot đã thực hiện lênh U, R, sau đó nhậ… Read More
  • tính giá trị biểu thức toán học bất kỳ, giống máy tính casiolập trình c/c++ tính giá trị của 1 biểu thức bất kỳ, giông máy tính casio #include<iostream> #include<time.h> using namespace std; long tinh(char *s) { char a[100],dau[100],b[100],e[100]; int i,d=0; for(i=0;i… Read More
  • đề thi và code giải Olympia IT tuần 1 CPTTRƯỜNG ĐH CÔNG NGHỆ THÔNG TINCÂU LẠC BỘ LẬP TRÌNH CPTCỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc TPHCM, ngày  20 tháng 03 năm 2015Cuộc Thi Lập Trình Olympia ITĐề Chính Thức Tuần 1Câu 1. (6đ) Trong kho h… Read More
  • đề thi lập trình olympia IT tuần 2TRƯỜNG ĐH CÔNG NGHỆ THÔNG TINCÂU LẠC BỘ LẬP TRÌNH CPTCỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc TPHCM, ngày  28 tháng 03 năm 2015Cuộc Thi Lập Trình Olympia ITĐề Chính Thức Tuần 2Câu 1. (6đ) Xâu biểu th… Read More