HDU2017新生赛 友好整数

Posted Wisdom+.+

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU2017新生赛 友好整数相关的知识,希望对你有一定的参考价值。

思路:

很简单的一个状态压缩,比赛时没想出来。

最多只有2^10个状态,n^2暴力一下也就1e6。

代码没测过。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))

const int N=1e6+5;
int cnt[1024];
ll a[N];
void f(ll n)
{
    int t=0;
    while(n)
    {
        t|=(1<<(n%10));
        n/=10;
    }
    cnt[t]++;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    while(cin>>n)
    {
        for(int i=0;i<n;i++)cin>>a[i];
        mem(cnt,0);
        for(int i=0;i<n;i++)f(a[i]);
        ll ans=0;
        for(int i=0;i<1024;i++)
        {
            for(int j=i;j<1024;j++)
            {
                if(i==j)ans+=(ll)cnt[i]*(cnt[i]-1)/2;
                else if(i&j)
                {
                    ans+=(ll)cnt[i]*cnt[j];
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

 

以上是关于HDU2017新生赛 友好整数的主要内容,如果未能解决你的问题,请参考以下文章

2017网络新生赛2305the count of num心得

HDU 17新生赛 身份证验证模拟

2017网络新生赛2303回文字串心得

HDU 17新生赛 正品的概率数论-概率论

华中农业大学新生赛C题

(dp)17bupt新生赛——B. Hmz 的女装