NC229269. Makes And The Product
描述
输入描述
第一行包含一个正整数,表示数组 中元素的数量。
第二行包含 个正整数,表示给定数组的元素。
输出描述
打印一个数字 — 三元组 的数量,使得 成对不同并且 是可能的最小值。
示例1
输入:
4 1 1 1 1
输出:
4
说明:
马克斯总是从四个中选择三个,选择它们的方法数是 4。示例2
输入:
5 1 3 2 3 4
输出:
2
说明:
选择一组数字 (1, 2, 3)(数字,而不是索引)。既然有两种方法可以选择一个元素3,那么答案就是2。示例3
输入:
6 1 3 3 1 3 2
输出:
1
说明:
选择一组数字 (1, 1, 2),并且只有1种方法可以选择索引。C++(clang++ 11.0.1) 解法, 执行用时: 52ms, 内存消耗: 936K, 提交时间: 2022-08-19 23:58:43
#include<bits/stdc++.h> using namespace std; int n,a[100005]; signed main() { cin>>n; for(int i = 1;i <= n;i++) cin>>a[i]; sort(a+1,a+n+1); int p = 3; while(a[3] == a[p]) p++; p--; if(a[2] != a[3]) cout<<p-2; else if(a[1] != a[2]) cout<<1LL*(p-1)*(p-2)/2; else cout<<1LL*p*(p-1)*(p-2)/6; return 0; }
pypy3 解法, 执行用时: 145ms, 内存消耗: 33216K, 提交时间: 2022-09-30 20:31:29
n = map(int, input()) a = list(map(int, input().split())) a.sort() if a[0] == a[1] and a[1] == a[2]: k = a.count(a[0]) print(k * (k - 1) * (k - 2) // 6) elif a[0] == a[1]: print(a.count(a[2])) elif a[1] == a[2]: k = a.count(a[1]) print(k * (k - 1) // 2) else: print(a.count(a[2]))