POJ3461 字符串hash
2016-02-01 17:02
495 查看
//为了防止冲突,使用了双hash #include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<algorithm> #define ull unsigned long long const ull B=1e8+7,C=1e8+119; const int dmax=1000100; char s[dmax],s1[dmax]; int hash(char *a,char *b){ int ans=0,i; ull x=strlen(a),y=strlen(b),t=1,t1=1; ull ah=0,bh=0,al=0,bl=0; if (x>y) return 0; for (i=0;i<x;i++){ t*=B,t1*=C; ah=ah*B+a[i],bh=bh*B+b[i]; al=al*C+a[i],bl=bl*C+b[i]; } for (i=0;i+x<=y;i++){ if (al==bl && ah==bh) ans++; if (i+x<y){ bh=bh*B-b[i]*t+b[i+x]; bl=bl*C-b[i]*t1+b[i+x]; } } return ans; } int main(){ int T; scanf("%d",&T); getchar(); while (T--){ gets(s1); gets(s); printf("%d\n",hash(s1,s)); } return 0; }
相关文章推荐
- python 几种常见的测试框架
- iOS开发-NSInteger 和 int 的区别
- 加载动作
- MongoDB的安装以及自启动问题
- OI知识体系
- 多线程之NSThread
- 一个轻client,多语言支持,去中心化,自己主动负载,可扩展的实时数据写服务的实现方案讨论
- 如果数据文件顺序被打乱,你有办法找回正确的文件把数据库打开吗?
- Bool
- AS不能发布release版本的解决方案
- mongodb---第一天
- 在OPENSTACK建VM时候,设置采用SSH密码认证登录
- 设计模式之_简单工厂模式、工厂方法模式、抽象工厂模式 、策略模式、策略与工厂的区别(转)
- 护眼苹果绿色值
- 组合模式
- oracle调用JAVA类的方法
- CouchBase 备份与还原
- 沈晓军 / LarvaFrame - 代码托管 - 开源中国社区
- 2015-02-01
- 在win7下python的xlrd和xlwt的安装于应用