第1题 精挑细选 时限:1s 空间:256m
小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下:
1、 这根钢管一定要是仓库中最长的;
2、 这根钢管一定要是最长的钢管中最细的;
3、 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。
相关的资料到是有,可是,手工从几百份钢管材料中选出符合要求的那根……
要不,还是请你编写个程序来帮他解决这个问题吧。
输入格式
文件第一行为一个整数 ( ),表示仓库中所有钢管的数量。
之后 行,每行三个整数,分别表示一根钢管的长度(以毫米为单位)、直径(以毫米为单位)和编码(一个9位整数)。
输出格式
文件中只有一个9位整数,表示选出的那根钢管的编码。
输入/输出例子1
输入:
4
3000 50 872198442
3000 45 752498124
2000 60 765128742
3000 45 652278122
输出:
752498124
#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],b[100005],c[100005],maxx=0,minn=99999,maxa=0;
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld%lld%lld",&a[i],&b[i],&c[i]);
if(a[i]>maxx)maxx=a[i];
}
for(int i=1;i<=n;i++){
if(a[i]==maxx&&b[i]<minn)minn=b[i];
}
for(int i=1;i<=n;i++){
if(a[i]==maxx&&b[i]==minn&&c[i]>maxa)maxa=c[i];
}
cout<<maxa;
return 0;
}
第2题 外币兑换 时限:1s 空间:256m
小明刚从美国回来,发现手上还有一些未用完的美金,于是想去银行兑换成人民币。可是听说最近人民币将会升值,并从金融机构得到了接下来十二个月可能的美元对人民币汇率,现在,小明想要在接下来一年中把美金都兑换成人民币,请问最多能得到多少人民币?
输入格式
输入的第一行是一个实数N(1.00<=N<=100.00),表示小明现有的美金数量。
接下来一行,包含12个实数ai,表示接下来十二个月的美元对人民币汇率。
输出格式
输出一个小数R,表示小明最多能获得的人民币数量,结果保留两位小数。
输入/输出例子1
输入:
46.91
6.31 6.32 6.61 6.65 5.55 5.63 6.82 6.42 6.40 5.62 6.78 5.60
输出:
319.93
#include<bits/stdc++.h>
using namespace std;
double n,a[1005],maxx=0;
int main(){
cin>>n;
for(int i=1;i<=12;i++){
cin>>a[i];
if(a[i]>maxx)maxx=a[i];
}
printf("%.2lf",maxx*n);
return 0;
}
第3题 相对高度 时限:1s 空间:256m
小明是班上的体育委员,体育老师要求小明记录班上每位同学的身高。但小明的记录方式让体育老师很为难,因为他只记录了每位同学与自己身高的差值,正数表示比小明高的,负数表示比小明矮的。现在,已知了小明的身高,和每位同学与小明身高的差值,求每位同学的身高。体育老师赚麻烦,找到学编程的你,你能帮助他吗?
输入格式
第一行两个数H、N(1<=N<=100),其中H为小明的身高,N表示班上还有N位同学.
第二行有N个整数,第 i个整数表示第i个同学与小明身高的差值。
输出格式
共N+1个数,即全班同学的身高。 (保留2位小数)
输入/输出例子1
输入:
1.42 3
0.02 0.25 -0.12
输出:
1.42 1.44 1.67 1.30
#include<bits/stdc++.h>
using namespace std;
long long m;
double n,a[1500];
int main(){
cin>>n>>m;
printf("%.2lf ",n);
for(int i=1;i<=m;i++){
cin>>a[i];
if(a[i]<0)printf("%.2lf ",n-a[i]);
else printf("%.2lf ",n+a[i]);
}
return 0;
}
第4题 小鱼的数字游戏 时限:1s 空间:256m
小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 ai(长度不一定,以 0 结束),记住了然后反着念出来(表示结束的数字 0 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这问题。
输入格式
一行内输入一串整数,以 0 结束,以空格间隔。
输出格式
一行内倒着输出这一串整数,以空格间隔。
输入/输出例子1
输入:
3 65 23 5 34 1 30 0
输出:
30 1 34 5 23 65 3
样例解释
数据规模与约定
对于 100%的数据,保证0≤ai≤231−1,数字个数不超过 100。
#include<bits/stdc++.h>
using namespace std;
long long a[100005];
int main(){
for(long long i=1;;i++){
scanf("%lld",&a[i]);
if(a[i]==0){
for(long long j=i-1;j>=1;j--){
printf("%lld ",a[j]);
}
return 0;
}
}
return 0;
}
第5题 最长平台 时限:1s 空间:256m
小S来到一块阶梯地,这一块阶梯地具有连续的n小块地,每一小块地都有一定的高度,如果连续m段地的高度相同,那么我们称这连续一段地的平地值为m。现在给出这一块阶梯地每一块地的高度值,请试编写一个程序,把这块阶梯地平地值最大者找出来,并输出该平地值。
输入格式
第一行一个正整数n ,n<=10000.
第二行n个正整数,表示地的高度。
输出格式
最大平地值
输入/输出例子1
输入:
10
1 2 2 3 3 3 4 5 5 6
输出:
3
#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],maxx=0,s=1;
int main(){
scanf("%lld",&n);
for(long long i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
for(long long i=1;i<n;i++){
if(a[i]==a[i+1]){
s++;
if(s>maxx){
maxx=s;
}
}
else s=1;
}
printf("%lld",maxx);
return 0;
}
第6题 可爱的小鱼 时限:1s 空间:256m
人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。
输入格式
第一行输入一个整数 n,表示鱼的数目,n<=100。
第二行内输入 n个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度,数据范围[0,10^8]。
输出格式
一行输出 n个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。
输入/输出例子1
输入:
6
4 3 0 5 1 2
输出:
0 0 0 3 1 2
#include<bits/stdc++.h>
using namespace std;
long long n,a[100],sum[100];
int main(){
scanf("%lld",&n);
for(long long i=0;i<n;i++){
cin>>a[i];
for(long long j=i;j>0;j--)
if(a[i]>a[j-1])
sum[i]++;
}
for(long long i=0;i<n;i++)
cout<<sum[i]<<' ';
return 0;
}
第7题 挡住视线 时限:1s 空间:256m
午饭时间在饭堂排队打饭。一行队伍中有N个人,小明站在队伍中第k个位置,身高高于小明的同学就会挡住小明的视线。请找出队伍中离小明最近且挡住小明视线的人。
输入格式
第一行有一个正整数N,表示队伍中的人数。
第二行有N个正整数ai,依次给出队伍中排队者的身高。
第三行有一个正整数k,表示小明在队伍中的位置。
【数据范围】
100%数据, 1<= N<=100000, k<=100000,100<= ai<200;
输出格式
输出小明的前面离小明最近且挡住小明视线的人的位置。如果前面没有人挡住小明视线,就输出-1。
输入/输出例子1
输入:
6
132 127 134 127 137 140
4
输出:
3
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100005],k;
int main(){
scanf("%lld",&n);
for(long long i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
scanf("%lld",&m);
for(long long i=m-1;i>=1;i--){
if(a[m]<a[i]){
printf("%lld",i);
return 0;
}
}
printf("-1");
return 0;
}
第8题 中位数 时限:1s 空间:256m
中位数指的是一组数,如果按照大小排序排好后最中间的那个数的值,如果有偶数个元素,那么就是最中间两个数的平均数!
比如:2 5 8 1 6,排序后的结果为1 2 5 6 8,那么这组数的中位数就是5!
再比如:8 9 1 2 3 0,排序后的结果为0 1 2 3 8 9,那么这组书的中位数就是(2+3)/2=2.5
输入格式
第一行:一个整数n代表有n个数(n≤100000)
第二行:n个数的值,数据范围为[0,100]
输出格式
中位数(结果保留1位小数)
输入/输出例子1
输入:
5
2 5 8 1 6
输出:
5.0
#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],t=0;
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
sort(a+1,a+n+1);
if(n%2==0){
printf("%.1lf",(a[n/2]+a[n/2+1])/2.0);
}
else {
printf("%.1lf",a[n/2+1]/1.0);
}
return 0;
}
第9题 年龄与疾病 时限:1s 空间:256m
某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18岁、19-35岁、36-60岁、61以上(含61)四个年龄段统计的患病人数以及占总患病人数的比例。
输入格式
共2行,第一行为过往病人的数目n(0 < n <= 1000),第二行为每个病人患病时的年龄。
输出格式
按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病总人数以及人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。
输入/输出例子1
输入:
10
1 11 21 31 41 51 61 71 81 91
输出:
2 20.00%
2 20.00%
2 20.00%
4 40.00%
#include<bits/stdc++.h>
using namespace std;
double s1,s2,s3,s4;
long long n,a;
int main(){
scanf("%lld",&n);
for(long long i=1;i<=n;i++){
scanf("%lld",&a);
if(a>=0&&a<=18)s1++;
else if(a>=19&&a<=35)s2++;
else if(a>=36&&a<=60)s3++;
else if(a>60)s4++;
}
cout<<s1<<" ";
printf("%.2lf",100.0*s1/n);
cout<<"%"<<'\n';
cout<<s2<<" ";
printf("%.2lf",100.0*s2/n);
cout<<"%"<<'\n';
cout<<s3<<" ";
printf("%.2lf",100.0*s3/n);
cout<<"%"<<'\n';
cout<<s4<<" ";
printf("%.2lf",100.0*s4/n);
cout<<"%";
return 0;
}
第10题 愧疚指数 时限:1s 空间:256m
佛山创文要求大家要遵守交通规则,发扬尊老爱幼精神。文文想做一个关于公交文化的调查。他专门为排队上车发明了一套叫做“愧疚指数”的分析系统,就是在队列中把人分为三等:第一等为优先级最高,最需要照顾的老人、小孩、孕妇等,应该最优先上车,优先代号为1;第二等是普通女人,为了发扬绅士风度,男人是要让女人先上车的,但优先级低于一等,优先代号为2;第三等是普通男人,优先级最低,应该排在最后面,优先代号为3。所谓的“愧疚指数”是指队列中一个人后面有多少人的优先级比他高,如队列中有5个人分别为:3 2 1 2 1,那么这5个人的“愧疚指数”分别为:4 2 0 1 0。现在已经知道一个队列,请你帮文文算出队列中每个人的“愧疚指数”。
输入格式
第一行是一个正整数n,表示一共有多少个人排队。
第二行有n个用空格隔开的正整数,它们从左至右给出了队列中n个人的优先代号。
对于80%的数据,n≦10000;
对于100%的数据,n≦200000。
输出格式
输出一行:有n个用空格分开的正整数,代表队列中每个人的“愧疚指数”。
输入/输出例子1
输入:
5
3 2 1 2 1
输出:
4 2 0 1 0
#include<bits/stdc++.h>
using namespace std;
long long s1,s2,a[1000001],b[1000001],n;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=n;i>=1;i--){
if(a[i]==1){
b[i]=0;
s1++;
}
if(a[i]==2){
b[i]=s1;
s2++;
}
if(a[i]==3)b[i]=s2+s1;
}
for(int i=1;i<=n;i++)cout<<b[i]<<" ";
return 0;
}