东方博宜OJ 比赛题 11月-A组(萌新)

原比赛链接:11月-A组(萌新) 东方博宜OJ

A. 同龄人

题目描述

小 A和另外 3 位同学在操场上散步,大家聊到了年龄的话题。

4 位同学每个人都报出了自己的年龄,请问有几位同学和小 A 同学是同龄人?

输入

第 1 行读入一个整数,代表小 A 同学的年龄;

第 2 行读入另外 3 个整数,代表另外三位同学的年龄,数字之间用空格隔开;

输出

输出 1 个整数,代表和小 A 同学年龄相同的同学的数量,请注意,计算同龄人的数量,不包括小 A 自己。

样例

输入

8
8 6 8

输出

2

输入

10
7 8 9

输出

0

输入

12
12 12 12

输出

3

说明

数据范围

4 位同学的年龄都是1∼20 之间的整数;

样例 11 解释

小 A 同学 8 岁,另外 3 个同学中有 2 位同学和小 A 同龄,因此答案为 2;

C++

#include<bits/stdc++.h>
using namespace std;
long long n,a,b,c,s=0;
int main(){
	cin>>n;
	cin>>a>>b>>c;
	if(n==a)s++;
	if(n==b)s++;
	if(n==c)s++;
	cout<<s;
    return 0;
}

B. 车库

题目描述

红太阳农场的车库里,停了很多自行车和三轮车,众所周知,一辆自行车有 2 个轮子,一辆三轮车有3 个轮子。

车库管理员张师傅数了数,车库一共有 N 个轮子。请编程计算出,车库中,可能有多少辆自行车,多少辆三轮车?

输入

读入一个整数 N ,代表车库中车轮的总数;

输出

请按照自行车从少到多的顺序,输出自行车和三轮车可能的数量,每行输出一组可能的答案;

每行用空格隔开 2 个整数,第 1 个整数代表自行车可能的数量,第 2 个整数代表三轮车可能的数量;

样例

输入

16

输出

2 4
5 2
8 0

输入

21

输出

0 7
3 5
6 3
9 1

说明

样例 1 分析

车库共有 16 个轮子,那么如果有 2 辆自行车, 4 辆三轮车,总轮子数量=2×2+4×3=16,符合题意,同理 5 辆自行车、 2 辆三轮车 或者 8 辆自行车、 0 辆三轮车,也都能计算出共有 16 个轮子;

数据范围

对于100% 的数据,2≤N≤1000;

#include<bits/stdc++.h>
using namespace std;
long long n; 
int main(){
	scanf("%lld",&n);
	for(long long i=0;i<=n/2;i++){
		for(long long j=0;j<=n/3;j++){
			if(n==i*2+j*3){
				printf("%lld %lld\n",i,j);
			}
		}
	}
    return 0;
}

C. 数字谜题

题目描述

乐乐的《趣味数学》书上有这样一个数学谜题:

有 NN 个整数,请按下列步骤寻找符合要求的数字:

  1. 将每个数的每一位拆出来后,统计出一共有多少位数字的值除以 33 的余数为 00;

  2. 统计结束后,如果统计的结果是偶数,那么这个数就是符合要求的数字;

请将所有符合要求的数字按照从小到大的顺序排序后输出;

乐乐觉得一个一个找实在是太慢了,他决定请学过编程的你帮忙写一个程序,帮他快速的找出答案。

输入

第 1 行读入一个整数 N,代表要读入数字的数量;

第 22行读入 N 个整数,用空格隔开;

输出

输出若干行,每行一个整数,按照从小到大的顺序,输出所有符合要求的数字。

样例

输入

8
138 290 3589 230 62 882 981 12000

输出

230
290
882
3589

输入

10
16716 14533 2394 29326 26186 31867 10090 22792 31775 15732 

输出

2394
10090
14533
16716
26186
31867

说明

样例 1 解释

读入的数据中,290、3589、230、882,均是满足条件的整数,以290 为例:数字 290 中,9 和 0 除以 3 的余数都为 0,因此290 各个位中有 2 位数除以 3 的余数为 0,符合题目要求的统计结果为偶数的要求。

数据范围

对于 100% 的数据1≤N≤10000,第二行读入的每个数 Ai​ 所在的范围为 1≤Ai​≤1000000。

#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],s=0,j=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
	}
    sort(a+1,a+n+1);
    while(n--){
		s=0;
    	j++;
        for(int i=a[j];i>0;i=i/10){
        	if(i%10%3==0){
        		s++;
			}
		}
        if(s%2==0){
        	cout<<a[j]<<endl;
        }
    }
    return 0;
}

 

D. 优秀的作品

题目描述

博爱小学举办书法大赛,学校一共收到了 N 个同学的作品,并给作品编号 1∼N。

这 N 幅作品被放到了学校的展厅展览,并请全校同学进行公开投票。投票结束,学校收到了 M 张投票,每张投票投给了 1 幅参赛的作品;学校预计评比出一等奖、二等奖、三等奖 各 1 名;

由于可能存在多个优秀作品得票数相同的情况,因此最终实际获奖名额可能会比预计多,这种情况下,学校会增加相应奖项等级的获奖名额。

比如,如果有 3 位同学得票数并列第 1,这种情况学校会颁发出 3 个一等奖。

请编程统计出一等奖、二等奖、三等奖获奖作品的编号。

输入

第 1 行读入 2 个整数 N 和 M,分别代表参赛作品的数量和投票的数量;

第 2 行读入 M 个整数,第 i 个整数Ai​ 代表了第 ii 张投票投给了编号为Ai​ 的作品。

输出

输出 3 行,每行输出若干整数,用空格隔开;

第 1 行输出一等奖获奖作品的编号,第 2 行输出二等奖获奖作品的编号,第 3行输出三等奖获奖作品的编号;

如果某个奖项有多个作品获得,那么该奖项的获奖作品编号按照编号值从小到大的顺序输出。

样例

输入

8 15
3 3 3 4 4 4 6 6 8 8 7 7 5 1 2

输出

3 4
6 7 8
1 2 5

输入

10 16
6 5 7 2 2 1 1 7 4 2 2 7 7 2 4 4 

输出

2
7
4

说明

样例 1 解释

3 号作品和 4 号作品各获得 3 票,并列第 1,评选为一等奖;

6 号作品、8 号作品、7 号作品各获得 2 票,并列第 2 ,评选为二等奖;

5 号作品、1号作品、2 号作品各获得 1 票,并列第 3 ,评选为三等奖;

数据范围

对于100% 的数据,6≤N,M≤100000,1≤Ai​≤N;

测试数据确保统计后一等奖、二等奖、三等奖至少各有 1 人。

#include<bits/stdc++.h>
using namespace std;
long long n,m,t,a[100005],maxx1,maxx2,maxx3; 
int main(){
	scanf("%lld%lld",&m,&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&t);
		a[t]++;
	}	
	for(int i=1;i<=m;i++){
		maxx1=max(maxx1,a[i]);
	}
	for(int i=1;i<=m;i++){
		if(a[i]!=maxx1){
			maxx2=max(maxx2,a[i]);
		}
	}
	for(int i=1;i<=m;i++){
		if(a[i]!=maxx1&&a[i]!=maxx2){
			maxx3=max(maxx3,a[i]);
		}
	}
	for(int i=1;i<=m;i++){
		if(a[i]==maxx1){
			cout<<i<<" ";
		}
	}
	cout<<'\n';
	for(int i=1;i<=m;i++){
		if(a[i]==maxx2){
			cout<<i<<" ";
		}
	}
	cout<<'\n';
	for(int i=1;i<=m;i++){
		if(a[i]==maxx3){
			cout<<i<<" ";
		}
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值