数对(pair)
小明得到了一个包含n个数的数列,他会从中选出两个不同位置的数形成一个数对,要求较左边的数对3取余的结果小于等于较右边的数对3取余的结果,问小明有多少种选法。
输入格式
输入两行,第一行包含一个正整数n,表示数列中数的数量。
第二行包含n个正整数,ai表示数列中的第i个数。
输出格式
输出一行,为一个整数,为所求的答案。
输入/输出例子1
输入:
4
1 3 4 2
输出:
5
样例解释
【数据范围】
对于60%的数据,1≤n≤10^3,1≤ai≤10^6。
对于100%的数据, 1≤n≤10^5,1≤ai≤10^9。
#include<bits/stdc++.h>
#define ll long long
ll a[4];
using namespace std;
int main(){
ll n,s=0;
cin>>n;
for(ll i=1;i<=n;i++){
int x;
cin>>x;
if(x%3==2)s+=a[1]+a[2]+a[0];
if(x%3==1)s+=a[1]+a[0];
a[x%3]++;
}
cout<<s<<endl;;
return 0;
}