哈希接近o1查找字符串
P3538 [POI2012]OKR-A Horrible Poem
/* 把这个人的因子分成 循环节的因子: 循环次数的因子: 把循环次数的因子除去,也就是循环节的因子了 循环节肯定是由某些因子组成的 把因子从小到大除一次就可以了 如果能够除掉这个因子,那除掉就一定是最有的 */ #include <bits/stdc++.h> using namespace std; const int M=5e5+5; using ull=unsigned long long; const ull P=131; ull base[M],num[M]; char s[M]; int g[M]; vector<int>prime; void init(int n) { for(int i=2;i<=n;i++) { if(g[i]==0)prime.push_back(i),g[i]=i; for(auto j:prime) { if(i*j>n)break; g[i*j]=j; if(i%j==0)break; } } base[0]=1; for(int i=1;i<=n;i++) { base[i]=base[i-1]*P; num[i]=num[i-1]*P+s[i]; } } ull query(int l,int r) { return num[r]-num[l-1]*base[r-l+1]; } int main() { int n; scanf("%d",&n); scanf("%s",s+1); init(n); int q;cin>>q; while(q--) { int l,r,len,ans; scanf("%d%d",&l,&r); len=ans=r-l+1; if(query(l+1,r)==query(l,r-1)) { puts("1"); continue; } while(len>1) { if(query(l+ans/g[len],r)==query(l,r-ans/g[len]))ans/=g[len]; len/=g[len]; } printf("%d\n",ans); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效