A Shuffled Equation(混洗方程)
【题目链接】
【考点】
判断
【题目大意】
整数序列A = (a1, a2, a3),对其任意排序,使得 a1 * a2 = a3,满足输出 "Yes",否则输出 "No"。
【解析】
三个变量全排,判断是否满足条件,有一个满足输出 "Yes"。
【难度】
GESP一级
【代码参考】
#include<bits/stdc++.h>
using namespace std;
int main(){
int a1, a2, a3;
cin >> a1 >> a2 >> a3;
if(a1 * a2 == a3 || a1 * a3 == a2 || a2 * a3 == a1)cout << "Yes";
else cout << "No";
}
B Who is Missing?(谁不见了?)
【题目链接】
原题链接:B - Who is Missing?
【考点】
数组、排序
【题目大意】
给定一个整数序列 M 。每个元素 A 是介于 1 和 N 之间的整数,包括两端,且所有元素都是唯一的。列出介于 1 和 N 之间的所有不在 A 中的整数,按升序排列。
【解析】
建一个桶,记录 M 序列里出现的整数,最后遍历桶里元素,找到不为0的,输出下标。
【难度】
GESP三级
【代码参考】
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[1005], n, m;
cin >> n >> m;
memset(a, 0, sizeof(a));
for(int i = 1; i <= m; i++){
int x;
cin >> x;
a[x]++;
}
if(n - m == 0){
cout << 0 << endl;
return 0;
}
cout << n - m << endl;
for(int i = 1; i <= n; i++){
if(!a[i]){
cout << i << ' ';
}
}
return 0;
}
C Bib
【题目链接】
原题链接:C - Bib
【考点】
排序、数组、结构体
【题目大意】
有 N 人编号从 1 到 N 。Person i 正穿着带有编号 Qi 的背心,并盯着人 Pi 。
根据每个人穿着的背心编号以及注视的对象编号,找出穿着特定编号背心的人所注视对象的编号。
【解析】
建立一个结构体数组包括注视对象编号 p 和 q 背心编号,下标为人员编号。qq数组用于存储每个人背心编号。再按照背心编号 q 从小到大排序数组,根据每个人注视对象的编号 p,在数组 qq 中找到对应的背心编号,这个编号就是我们要找的被穿着带有特定编号背心的人所注视对象的编号,并输出结果。
【难度】
GESP四级
【代码参考】
#include<bits/stdc++.h>
using namespace std;
// qq数组用于存储每个人的背心编号
int n, qq[300005];
// p注视对象编号、q背心编号
struct node{
int p, q;
}a[300005];
// 按照q从小到大排序
bool cmp(node a, node b){
return a.q < b.q;
}
int main(){
cin >> n;
// 循环读取每个人注视的对象编号p
for(int i = 1; i <= n; i++){
cin >> a[i].p;
}
for(int i = 1; i <= n; i++){// 循环读取每个人所穿背心编号q
cin >> a[i].q;
qq[i] = a[i].q;// 并将其存储到qq数组中
}
sort(a+1, a+n+1, cmp); // 对结构体数组a按照背心编号q进行排序
for(int i = 1; i <= n; i++){// 遍历排序后的数组a,输出结果
cout << qq[a[i].p] << ' ';
}
return 0;
}

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



