NC52940. 114514
描述
输入描述
第一行一个数表示n
之后一行n个数表示这个序列
n <= 229028,序列的值域在[0,1145141919]中
输出描述
输出一行一个数表示答
示例1
输入:
2 1 114514
输出:
2
C++14(g++5.4) 解法, 执行用时: 50ms, 内存消耗: 872K, 提交时间: 2019-09-20 22:12:24
#include<bits/stdc++.h> using namespace std; #define ll unsigned long long ll ans; int n,i,a[200000]; int main() { scanf("%d",&n); while(n--) { scanf("%d",&i); if(i<200000)a[i]++; } ans=(a[114514]+(ll)a[2]*a[31]*a[1847]+(ll)a[2]*a[57257]+(ll)a[31]*a[3694]+(ll)a[62]*a[1847])*(a[1]+1); cout<<ans<<endl; return 0; }
C++(clang++11) 解法, 执行用时: 63ms, 内存消耗: 2592K, 提交时间: 2021-04-11 15:11:21
#include<bits/stdc++.h> using namespace std; #define ll unsigned long long ll m,flag,p,a[10000000]; int main(){ cin>>m; for (int i=1;i<=m;++i){ cin>>p; a[p]++; } cout<<(a[1]+1)*(a[114514]+a[2]*a[31]*a[1847]+a[62]*a[1847]+a[57257]*a[2]+a[3694]*a[31]); return 0; }
Python(2.7.3) 解法, 执行用时: 224ms, 内存消耗: 23336K, 提交时间: 2019-09-20 19:25:21
n=int(raw_input()) a=raw_input().split() a=[int(i) for i in a] buc=[0]*115000 for i in range(0,n): buc[a[i]]=buc[a[i]]+1 ans=0 ans=(buc[1]+1)*(buc[114514]+buc[2]*buc[31*1847]+buc[1847]*buc[62]+buc[1847*2]*buc[31]+buc[2]*buc[31]*buc[1847]) print(int(ans))
Python3(3.5.2) 解法, 执行用时: 135ms, 内存消耗: 29360K, 提交时间: 2019-09-21 10:10:17
import collections n=int(input()) list1=input().split() c=collections.Counter(list1) print((c['2']*c['31']*c['1847']+c['62']*c['1847']+c['2']*c['57257']+c['31']*c['3694']+c['114514'])*(1+c['1']))