4917: Hash Killer IV

今天晚上本来是做作业的。。。但是手痒又来敲了一题。。。作业当然就没做了。。。早知道晚上想打题还不如打CF。。然后就开始看这题了,一眼——智障模拟题嘛。。于是开始码码码。。。肯快就码玩了。。还手动除了几个样例,感觉很对啊,于是就叫了。。WA。。。WA。。。。还是WA。。。。。QAQ这评测机子有毒吧。。。当时我用的是这份代码(变态的我已经全部加了LL)

#include<cstdio>
#include<cstring>
typedef long long LL;
const LL N=200;
LL Q;
LL a[N],cnt;//二进制
LL mymax (LL x,LL y)
{
    return x>y?x:y;
}
void change (LL x)//先将这个变为二进制 
{
    cnt=0;
    while (x>0LL)
    {
        a[++cnt]=(x&1LL);
        x>>=1LL;
    }
    return ;
}
void change1 (LL ooo)
{
    for (LL u=mymax(0LL,cnt-ooo);u>=1LL;u--)
        a[u]=a[u]^a[u+ooo];
}
LL bt ()
{
    LL x=0;
    for (LL u=1;u<=cnt;u++)
        x=x+a[u]*(1LL<<(u-1LL));
    return x;
}
int main()
{
 /* printf("%d\n",1<<28);
  freopen("a.in","r",stdin);*/
    scanf("%lld",&Q);
    while (Q--)
    {
        LL t;
        scanf("%lld",&t);
          
        t=t/((1LL<<16LL)+1LL);
        change(t);
        change1(11LL);
        t=bt();
          
        t=t/((1LL<<3LL)+1LL);
        change(t);
        change1(6LL);
        t=bt();
          
        t=t/((1LL<<10LL)+1LL);
        printf("%lld\n",t);
    }
    return 0;
}

拿去对拍,数据出大了。。发现不一样 天真的我以为数据太大帮标称开了long long

然后排啊排,全对啊,感觉很棒棒。。

还是WA,严重怀疑评测机。。

是去找了TYB大佬。。跪烂。。他和我说可能不能开long long,因为题目是unsigned int 

蛤,还有这种操作,于是就发现自己已经错得一塌糊涂了QAQ最后看了下标称,思路都是一样的都是倒着模拟。

hash不注重定义类似害死人。。。。最后懒得写用了标称精神AC【捂脸】

#include<cmath>
#include<cstdio>  
#include<cstdlib>
#include<cstring>  
#include<iostream>
#include<algorithm>
using namespace std;
unsigned int q,t,bin[35];
int main()
{
    scanf("%u",&q);
    bin[0]=1;
    for (int i=1;i<=31;i++)
        bin[i]=bin[i-1]*2;
    while (q--)
	{
        scanf("%u",&t);
        for (int i=0;i<=15;i++)
            t-=((t/bin[i])&1)*bin[i+16];

        for (int i=31;i>=11;i--)
            t^=((t/bin[i])&1)*bin[i-11];
        
        for (int i=0;i<=28;i++)
            t-=((t/bin[i])&1)*bin[i+3];

        for (int i=31;i>=6;i--)
            t^=((t/bin[i])&1)*bin[i-6];
            
        for (int i=0;i<=21;i++)
            t-=((t/bin[i])&1)*bin[i+10];
        printf("%u\n",t);
    }
}

这题告诉我,1.一定要看清楚题 2.hash一定要注意类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值