ACM_夢中的函數
阿新 • • 發佈:2018-06-28
color clas 次數 output 不重復 答案 輸入 other name
夢中的函數
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
寒假那段時間,每天刷題的小G連做夢都是代碼,於是有了這道題。 給定一個數組a,求g(a),g(a)=∑( a[i]*f(a[i]) ) 其中f(x)表示x在數組a中的出現次數,重復數字不重復計算。
Input:
多組數據輸入(EOF),每組數據第一行是數組a的大小N(1<=N<=10000),第二行是N個數A1到AN(-10000<=Ai<=10000)
Output:
對於每組測試數據,以"ans"=answer的形式輸出答案。
Sample Input:
5 2 23 233 233 2333
Sample Output:
"ans"=2824
解題思路:使用map容器(鍵:某個數字,值:對應數字出現的次數)簡單過,時間復雜度為O(nlogn)。
AC代碼:
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 LL ans;int x,n;map<int,int> mp; 5 int main(){ 6 while(cin>>n){ 7 mp.clear();ans=0; 8 while(n--){cin>>x;mp[x]++;}9 for(map<int,int>::iterator it=mp.begin();it!=mp.end();++it) 10 ans+=(it->first)*(it->second);//鍵值的引用 11 cout<<"\"ans\"="<<ans<<endl; 12 } 13 return 0; 14 }
ACM_夢中的函數