Codeforces Round #383 (Div. 2)(A+B)

来源:互联网 发布:零售药店软件 编辑:程序博客网 时间:2024/05/18 00:53

A: 题意:求解1378^n的个位数为几?
题解:快速幂裸题
代码:

#include<bits/stdc++.h>#define ll long longusing namespace std;ll quick(ll x,ll y){    ll ans=1;    while(y)    {        if(y&1)            ans=ans*x%10;        x=x*x%10;        y>>=1;    }    return ans%10;}int main(){    ll n;    cin>>n;    cout<<quick(8,n)<<endl;}

B:题意:给出n个数和k,问异或为k的组数。
题解:a异或b=c,推出b异或c=a,map计数,注意k为0的情况。
代码:

#include<bits/stdc++.h>#define ll long longusing namespace std;map<ll,ll>mp;ll a[1000006];int main(){    int n,x;    mp.clear();    scanf("%d%d",&n,&x);    bool p=false;    if(x==0)        p=true;    for(int i=0;i<n;i++)    {        scanf("%d",&a[i]);        mp[a[i]]++;    }    ll ans=0;    for(int i=0;i<n;i++)    {        int tmp=a[i]^x;        if(mp[tmp])        {            if(p)                ans+=mp[tmp]-1;            else                ans+=mp[tmp];        }    }    printf("%lld\n",ans/2);}
0 0
原创粉丝点击