题目描述

小蓝有 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;
}