来源:加码未来2024年深圳罗湖区创客节模拟题(小学组)
第一题
题目描述
给你n个数,找出出现次数超过一半的数。题目保证这样的数一定存在。
输入格式
第一行一个整数n,(n<=1000)
第二行n个整数(<1000000)
输出格式
输出一个整数
样例输入
5
1 2 3 3 3
样例输出
3
参考答案
#include <bits/stdc++.h>
using namespace std;int a[1005],n;int main(){cin >> n;for(int i = 0; i < n; i++){cin >> a[i];int m = 1;for(int j = 0; j < i; j++){if(a[j] == a[i]) m++;}if(m > n / 2){cout << a[i] << endl;return 0;}}return 0;
}
第二题
题目描述
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
输入格式
一行,一个字符串(长度不超过200),句子的开头和结尾没有空格。
输出格式
一行,过滤后的字符串。
样例输入
Hello world.This is c language.
样例输出
Hello world.This is c language.
参考答案
#include<bits/stdc++.h>
using namespace std;
int main(){string s;getline(cin,s);bool t = 1;for(int i = 0; i < s.size(); i++){if(s[i] != ' ') {cout << s[i];t = 1;}else{if(t == 1) cout << " ";t = 0;}}return 0;
}
第三题
题目描述
又到了狗星福盛全工厂发工资的日子,福盛全每次发工资都要经过子里的狗副厂长审核井签字同意。这天,狗副厂长想了解厂里狗员工的薪资情况,他找来管理财务的AC狗,让他把员工工资表拿过来看看每位狗员工有如下几个字段的信息:员工编号、所属部门编号、薪资、职位等级。狗副厂长希望看到的工资表一目了然,所以他定了一个排序规则:
1、薪资从大到小排序。
2、薪资相同时,按照职位等级从大到小排序。
3、薪资、职位等级均相同的情况下,按照所属部门编号从小到大排序。
4、薪资、职位等级、部门均相同时,按照员工编号从小到大排序。
管理财务的AC狗犯了难,虽然他智商比肩袋鼠,但是他不会处理这个事,请你帮他解决这个问题。
输入格式
输入的第一行为正整数 N,代表有 N 个员工。
输入的接下来 N 行,每行包含 4个字段,分别为员工编号、薪资、部门、职位等级。
输出格式
输出仅有一行,包含 N 个整数,表示 N 个员工按照规则排序后的员工编号。
样例输入
6
1 70000 1 2
2 65000 1 2
3 90000 2 1
4 100888 3 3
5 68000 3 2
6 90000 2 3
样例输出
4 6 3 1 5 2
#include<bits/stdc++.h>
using namespace std;struct person{int a,b,c,d; // a 员工编号 b 部门编号 c 薪资 d 职位
}arr[1005];int cmp(person x,person y){// 顺着逻辑写:需要多层 if 嵌套// 反推:减少嵌套if(x.c != y.c) return x.c > y.c;if(x.d != y.d) return x.d > y.d;if(x.b != y.b) return x.b < y.b;return x.a < y.a;
}
int main (){int n;cin >> n;for(int i = 1; i <= n; i++){cin >> arr[i].a >> arr[i].c >> arr[i].b >> arr[i].d;}sort(arr + 1,arr + 1 + n,cmp);for(int i = 1;i <= n; i++){cout << arr[i].a <<" ";}return 0;
}
第四题
题目描述
木材厂有