hdu5968异或密码(暴力)

来源:互联网 发布:淘宝怎么用微信支付 编辑:程序博客网 时间:2024/06/18 13:48

思路:

数据小可以直接暴力枚举(以后看题得先看数据=。=!,不然看题时容易想复杂),把序列的每个连续序列的异或值都存进数组里,对每个询问直接暴力比较就好。

代码:

#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll INF = 0x3f3f3f3f;const ll INFF = 0x3f3f3f3f3f3f3f3f;const ll mod = 1e9+7;const int maxn = 1e5+7;int a[110],b[110][110];int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n;        scanf("%d",&n);        memset(b,0,sizeof(b));        for(int i = 0;i<n;i++)        {            scanf("%d",&a[i]);        }        for(int i = 1;i<=n;i++)        {            for(int j = 0;j<=n-i;j++)            {                for(int k = 0;k<i;k++)                {                    b[i][j]^=a[j+k];                }            }        }        int m;        scanf("%d",&m);        ll minn = INFF;        while(m--)        {            int num;            minn = INFF;            scanf("%d",&num);            int l = 0;            for(int i = n;i>=1;i--)            {                for(int j = 0;j<=n-i;j++)                {                    if((ll)abs(b[i][j]-num)<minn)                    {                        minn = (ll)abs(b[i][j]-num);                        l = i;                    }                }            }            printf("%d\n",l);        }        printf("\n");    }    return 0;}

原创粉丝点击