题目描述
小蓝有 30 个数,分别为:99, 22, 51, 63, 72, 61, 20, 88, 40, 21, 63, 30, 11, 18, 99, 12, 93, 16, 7, 53, 64, 9, 28, 84, 34, 96, 52, 82, 51, 77 。小蓝可以在这些数中取出两个序号不同的数,共有 30*29/2=435 种取法。请问这 435 种取法中,有多少种取法取出的两个数的乘积大于等于 2022 。
- 题目难度:简单
- 题目考察方向:
排列(排列是指从一组元素中选取若干个元素进行排列,考虑元素顺序)
组合(从一组元素中选取若干个元素,不考虑元素顺序) - 由此题可知考察的是组合
代码实现
#include <bits/stdc++.h>
using namespace std;
int nums[31] = { 0, 99, 22, 51, 63, 72, 61, 20, 88, 40,
21, 63, 30, 11, 18, 99, 12, 93, 16, 7, 53,
64, 9, 28, 84, 34, 96, 52, 82, 51, 77 };
int main ()
{
int res=0;
for(int i=1;i<=31;i++){
for(int j=i+1;j<=31;j++){
if(nums[i]*nums[j]>=2022) res++;
}
}// 双重循环后计算的是任取两个数的组合数,如果想求排列数,直接乘2;例 99和22,也可以写成 22和99;
cout<<res<<endl;
return 0;
}