Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
Friday, January 30, 2015

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


0 comments:

Post a Comment

Popular Posts