【BZOJ4917】Hash Killer IV

Description

有一天,tangjz造了一个Hash函数:
unsigned int Hash(unsigned int v){
    unsigned int t = v;
    t = t + (t << 10);
    t = t ^ (t >> 6);
    t = t + (t << 3);
    t = t ^ (t >> 11);
    t = t + (t << 16);
    return t;
}
小Q发现这个函数非常不靠谱,对于任意的t,他可以随手构出个数字v使得Hash(v)=t。
小Q现在想考考你,他将给出Q个t,你需要构造出满足条件的v。

Input

第一行包含一个正整数Q(1<=Q<=100000),表示询问的个数。
接下来Q行,每行一个整数t(0<=t<2^32),表示询问的t。
输入数据保证对于每个t至少存在一组解。

Output

对于每组数据输出一行一个整数,即合法的v,若有多组可行解,输出任意一组。

Sample Input

4
614278301
1228622139
1841720774
2457244278

Sample Output

1
2
3
4

题解:发现每个操作都是能反过来的。对于操作1,3,5,可以看成是原数*一个数,因为乘的是奇数而模数是偶数,所以反过来做的话直接乘逆元就行了。对于2,4操作,首先最高的6/11位是不受影响的,然后依次确定后面的位即可。

#include <cstdio>
typedef unsigned int ui;
ui ans,x;
inline ui work(ui x,int y)
{
for(int i=31-y;i>=0;i--) x^=((x&(1u<<(i+y)))>>y);
return x;
}
int main()
{
int T; scanf("%d",&T);
while(T--) scanf("%u",&ans),ans*=4294901761u,ans=work(ans,11),ans*=954437177u,ans=work(ans,6),ans*=3222273025u,printf("%u\n",ans);
return 0;
}

最新文章

  1. docker通过iptables修改或新增镜像映射端口
  2. trigger() --工作中问题nav样式
  3. jQuery延迟加载插件(Lazy Load)详解
  4. 见证历史 -- 2013 NBA 热火夺冠之路有感
  5. FZU 2219 StarCraft(星际争霸)
  6. 深入了解 Dojo 的服务器推送技术
  7. jquery如何获取url中问号后面的数值
  8. UIButton 之 按下高亮
  9. MongoDB可视化工具--Robo 3T 使用教程
  10. Git revert及其他一些回退操作
  11. SQL Server优化查询
  12. [转]什么是C++虚函数、虚函数的作用和使用方法
  13. SpringBoot------全局异常捕获
  14. 优云亮相GOPS2017全球运维大会 “黑科技”获全场最高关注
  15. mysql 如何选择随机行
  16. abp+angular+bootstrap-table的使用
  17. USACO 6.5 Checker Challenge
  18. Java8新特性之重复注解(repeating annotations)浅析
  19. Unity Remote 5 使用
  20. Go语言最佳实践——通道和并发

热门文章

  1. css - 小程序样式
  2. javascript - 闭包之一些常见的写法
  3. .Net之路(十五)图解LoadRunner压力測试
  4. 通过ngxtop实时监控webserver的访问情况 / 解决ImportError: No module named _sqlite3问题
  5. Python 实现的猫脸识别、人脸识别器。
  6. JPA联合主键@EmbeddedId使用详解附查询例子
  7. 服务器上使用matplotlib.pyplot绘图
  8. Asp.net 数据库依赖那些事
  9. 李洪强漫谈iOS开发[C语言-002]-开发概述程序的本质与简单执行过程
  10. wb标准