PAT 1122 找奇葩 20分

92 阅读1分钟

1122 找奇葩 - PAT (Basic Level) Practice (中文) (pintia.cn)

开数组不开数组都可以:

开数组

#include<iostream>
#include<map>
using namespace std;
const int N=1e4+10;
int a[N];
map<int,int>m;
int main()
{
    int n=0;cin>>n;
   for(int i=-0;i<n;i++)
    {
    cin>>a[i];
      m[a[i]]++;
    }
     int s;
    for(auto& it: m)
    {
        if(it.first%2==1)
        {
             if(it.second%2==1)
            {
                cout<<it.first;
                 break;
            }
        }

    }
    return 0;
}

不开数组

#include<iostream>
#include<map>
using namespace std;

int main()
{
    int n = 0; cin >> n;
    map<int, int>m;
    for (int i = 0; i < n; i++)
    {
        int temp; cin >> temp;

        m[temp]++;

    }


    for (auto& it : m)
    {
        if (it.first % 2)
        {
            if (it.second % 2)
            {
                cout << it.first;
                break;
            }
        }
    }
    return 0;
}

如果不用map用数组哈希的话这道题数组哈希要大一点才能过:

#include<bits/stdc++.h>
using namespace std;
 int  m[100005];
 int  a[10005];
int main()
{
    int temp;
    int n;cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        m[a[i]]++;
    }
    
for(int i=0;i<n;i++)
{
    if(a[i]%2==1)
    {
        if(m[a[i]]%2==1)
        {
            cout<<a[i];
            break;
        }
    }
}
    return 0;
}