题⽬描述
传智专修学院提供 A,B 两个课程,分别有 n,m 个学⽣报名。报名 A 的学⽣的编号为 an ,报名 B 的学⽣的编号为 bm,求有多少个学⽣同
时报名了两个课程。对于所有数据,
保证每个课程报名的学⽣编号不会重复。
输⼊格式
输⼊共 3 ⾏。
第 1 ⾏输⼊ 2 个正整数 n,m。
第 2 ⾏输⼊ n 个正整数 a1…an,表⽰报名课程 A 的学⽣编号。
第 3 ⾏输⼊ m 个正整数 b1…bm,表⽰报名课程 B 的学⽣编号。
输出格式
输出共 1 ⾏ 1 个整数,表⽰答案。
输⼊ #1
5 5
1 2 3 4 5
1 3 4 5 6
输出 #1
4
说明/提⽰
样例解释
我们发现,1,3,4,5 这 4 名学⽣同时报名了两门课程,所以答案是 4。
思路:数据不⼤,可以直接暴⼒,⼆重循环判断即可。数据⼤的话应该可以采⽤ “双指针” 算法。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,a[99],b[99],sum;
int main()
{
cin>>n>>m;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=1; i<=n; i++) cin>>b[i];
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++)
if(a[i]==b[j]) sum++;
}
cout<<sum<<endl;
return 0;
}
题⽬描述
传智专修学院有 n 名同学,每个同学都有⼀个数字 an 。同时还知道⼀个常数 k 。如果有两名同学,第 i 名同学和第 j 名同学,满⾜ i<j 且
ai x aj ≤ k,那么这两名同学就被称为“和谐的⼀对”。请问这些同学中,有多少对“和谐的⼀对”呢?
对于所有数据,n<=1e3,ai<=1e5,k<=1e9。