bsgs
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<queue> #include<math.h> #include<map> #define LL long long using namespace std; LL a,b,c,m,f[1200000]; map<LL,int> mp; LL qsm(LL x) { LL sum=1,aa=a%c; while(x>0) { if( x%2 ) sum=(sum*aa)%c; x=x>>1; aa=(aa*aa)%c; } return sum; } int main() { mp.clear(); while(scanf("%lld%lld%lld",&c,&a,&b)!=EOF) { mp.clear(); if(!(a%c)) { printf("no solution\n"); continue; } int p=false; m=ceil(sqrt((double)c)); LL ans; for(int i=0;i<=m;i++) { if(i==0) { ans=b%c; mp[ans]=i; continue;//? } ans=(ans*a)%c; mp[ans]=i; } LL t=qsm(m);ans=1; for(int i=1;i<=m;i++) { ans=(ans*t)%c; if(mp[ans]) { int t=i*m-mp[ans]; printf("%d\n",(t%c+c)%c); p=true; break; } } if(!p) printf("no solution\n"); } return 0; }
HASH
// poj2417 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> #include<queue> #define LL long long #define inf (1ll<<29) #define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout) using namespace std; const int M=1000007; struct Hash {int w,id,next;}h[1000010]; int head[M],cnt; void insert(LL x,int I) { int id=x%M; h[++cnt]=(Hash){x,I,head[id]};head[id]=cnt; } int find(LL x) { int id=x%M; if (!head[id]) return -1; for (int i=head[id];i;i=h[i].next) if (h[i].w==x) return h[i].id; return -1; } LL power(LL a,LL b,LL p) { LL res=1; while (b) { if (b&1) (res*=a)%=p; b>>=1;(a*=a)%=p; } return res; } LL BSGS(LL a,LL b,LL p) { int m=sqrt(p); memset(head,0,sizeof(head)); insert(1,0); LL inv=power(a,p-1-m,p),e=1; for (int i=1;i<=m;i++) { e=e*a%p; if (find(e)==-1) insert(e,i); } for (int i=0;i*m<p;i++) { int x=find(b); if (x!=-1) return x+i*m; b=b*inv%p; } return -1; } int main() { LL p,a,b; while (scanf("%lld%lld%lld",&p,&a,&b)!=EOF) { LL ans=BSGS(a,b,p); if (ans==-1) puts("no solution"); else printf("%lld\n",ans); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App