小学复赛试题精选(3)

2019-04-01 19:53

7、排队接水 问题描述:

“五一”劳动节到了,向阳小学五年级安排了一个小组的同学到文化广场搞清洁。广场边上只有一个水龙头,要求每一个同学带一个桶接水搞清洁,由于每个同学所带的桶大小不同,接满水所用的时间也不同,现在已知每一个同学的桶接满水所需要的时间,要求所有同学都要排队等候接水,注意接满水后的同学马上去搞清洁,不再等候,对于一个排好队的顺序,可以计算出所有同学等候接水的时间的总和。如有4个同学,他们接满水所需的时间分别是5、3、6、7,则第一个同学接水时,第二、三、四个同学都要等5个单位的时间,第二个同学接水时,则第三、四个同学都要等3个单位时间,第三个同学接水时,则第四个同学要等6个单位的时间,所有同学等候的时间共为:5*3+3*2+6*1=27。但如果同学们排队顺序改一下,他们接满水所需的时间分别是7、5、6、3,则所有同学等候的时间共为:7*3+5*2+6*1=37。现在给出每一个同学接满水所需的时间,请你安排一种排队顺序,使得所有同学等候的时间总和为最小,输出这个最小值。 数据输入:

从文件water.in中读入数据,第一行为一个正整数N(1

结果输出到文件water.out中,只有一个数,表示所有同学等候的时间总和的最小值。 输入输出样例: Water.in 4 5 3 6 7

Water.out 25

【问题分析】

这题就是给你N个同学接满水所需的时间,让你求出所有同学等候时间总和的最小值 【算法分析】

这题可以先对N个同学接满水所需的时间从小到大进行排序,由于N和Y都比较小,所以用什么排序都可以,然后把每个同学接水时,剩下同学等待的总时间加到计数器t中,最后输出t即可。 【参考程序】 var n,i,t:longint;

a:array[1..100] of longint; procedure try(l,r:longint); var i,j,x,t:longint; begin

i:=l; j:=r; x:=a[(l+r) div 2]; repeat

while a[i]x do dec(j);

11

if i<=j then begin t:=a[i]; a[i]:=a[j]; a[j]:=t;

inc(i); dec(j); end; until i>j;

if l

assign(input,'water.in'); assign(output,'water.out'); reset(input); rewrite(output); readln(n);

for i:=1 to n do readln(a[i]); try(1,n);

for i:=1 to n do t:=t+a[i]*(n-i); writeln(t);

close(input); close(output); end.

12

8、聪明的小李 问题描述:

小李是希望小学六年级的学生,在一次数学课上,张老师出了一道题,小李很快就答出来了。这个题目是这样的:给定一个正整数N,请求出2~N之间长度最长的、成等差数列的素数(质数)。例如:当N的值为40时,在2~40之间的全部素数有: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37。其中公差(每两个数之间的差)为1的素数数列为2, 3,其长度(素数的个数)为2, 公差为2的素数数列为3, 5, 7,其长度为3. ?? 。 数据输入:

数据从文件sushu.in中读入,只有一个正整数N(2

数据输出到文件sushu.out中,第一行只有一个数t,表示2~N之间长度最长的、成等差数列的素数(质数)的个数,第二行有t个数,表示符合条件的素数数列,两个数之间用空格隔开(如果最长长度相同的素数列有多种方案,则输出第一个数数值最小的那个数列)。

提示 :1、所谓等差数列就是每两个数之间的差都相等的一列数。

2、本题算法可为:首先用筛选法求2-N之间的全部素数,存放在数组B中,然后

用2个变量i,j分别表示数列的第一个数和公差,将求出的每个素数尝试作为素数列的第一个数,公差逐步增大,从而求出满足条件的素数数列。

输入输出样例: Sushu.in 40

Sushu.out 5

5 11 17 23 29

【问题分析】

这题就是给你一个数N\\,让你求出2~N中所有素数所能组成的最大的等差数列 【算法分析】

这题可以先求出2~N中所有的素数,放在b数组中,并求出2~N中所有的素数的个数k,然后求出以b[i]为首项,b[j]-b[i]为公差,所组成的等差数列最多能有几项(1<=i

var a:array[2..10000] of boolean; b:array[1..2000] of longint;

n,i,j,k,t,s,ans,total,max,q:longint; begin

assign(input,'sushu.in'); assign(output,'sushu.out'); reset(input); rewrite(output); readln(n);

for i:=2 to trunc(sqrt(n)) do if not a[i] then

13

begin k:=i;

while k+i<=n do begin k:=k+i; a[k]:=true; end; end; k:=0;

for i:=2 to n do if not a[i] then begin inc(k); b[k]:=i; end;

max:=1; ans:=1; for i:=1 to k-1 do for j:=i+1 to k do begin

s:=b[j]-b[i]; total:=2; t:=b[j]; while not a[t+s] do begin t:=t+s;

if t>n then break; inc(total); end;

if total>max then begin max:=total; ans:=i; q:=s; end; end;

writeln(max);

for i:=1 to max-1 do write(b[ans]+(i-1)*q,' '); writeln(b[ans]+(max-1)*q); close(input); close(output); end.

14


小学复赛试题精选(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:VOC废气处理工艺 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: