博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2417 && poj3243(Baby-Step Giant-Step)
阅读量:7070 次
发布时间:2019-06-28

本文共 1949 字,大约阅读时间需要 6 分钟。

 

Discrete Logging
Time Limit: 5000MS   Memory Limit: 65536K
Total Submissions: 4624   Accepted: 2113

 

Description

Given a prime P, 2 <= P < 231, an integer B, 2 <= B < P, and an integer N, 1 <= N < P, compute the discrete logarithm of N, base B, modulo P. That is, find an integer L such that 
B
L
== N (mod P)

Input

Read several lines of input, each containing P,B,N separated by a space.

Output

For each line print the logarithm on a separate line. If there are several, print the smallest; if there is none, print "no solution".

Sample Input

5 2 15 2 25 2 35 2 45 3 15 3 25 3 35 3 45 4 15 4 25 4 35 4 412345701 2 11111111111111121 65537 1111111111

Sample Output

013203120no solutionno solution19584351462803587

 

题意:

a^x = b(mod n) ,求解x(模板题)

 

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 typedef long long ll; 9 typedef long double ld;10 11 using namespace std;12 #define MOD 7654313 int hs[MOD],head[MOD],Next[MOD],id[MOD],top;14 15 void insert(int x,int y)16 {17 int k = x % MOD;18 hs[top] = x,id[top] = y,Next[top] = head[k],head[k] = top++;19 }20 21 int find(int x)22 {23 int k = x % MOD;24 for(int i = head[k];i != -1;i= Next[i])25 {26 if(hs[i] == x)27 return id[i];28 }29 return -1;30 }31 32 int BSGS(int a,int b,int n)33 {34 memset(head,-1,sizeof(head));35 top = 1;36 if(b == 1)37 return 0;38 int m = sqrt(n*1.0),j;39 long long x = 1,p =1;40 for(int i = 0;i < m;i++,p = p*a%n)41 insert(p*b%n,i);42 for(ll i = m;;i+=m)43 {44 if((j = find(x = x*p % n)) != -1) return i-j;45 if(i > n) break;46 }47 return -1;48 }49 50 int main()51 {52 int p,b,n;53 while(scanf("%d%d%d",&p,&b,&n) != EOF)54 {55 int ans = BSGS(b,n,p);56 if(ans == -1)57 printf("no solution\n");58 else59 printf("%d\n",ans);60 }61 return 0;62 }
View Code

 

转载于:https://www.cnblogs.com/Przz/p/5409647.html

你可能感兴趣的文章
一个有趣的算法题。。。
查看>>
spring - ioc和aop
查看>>
svn branching and merging
查看>>
Linux系统基础网络配置
查看>>
拥抱PBO(基于项目的组织)聚焦核心价值创造
查看>>
这是要逆天么,看我控制台程序玩Microsoft XPS Document 打印
查看>>
jmeter源码编译
查看>>
jquery 取id模糊查询
查看>>
谈谈转行
查看>>
收集的网络上大型的开源图像处理软件代码(提供下载链接)
查看>>
IOS调试下载的demo出现说项目不能在什么的SDK调试
查看>>
#周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
查看>>
HTTP常用Header讲解
查看>>
使用Windows系统的几个好的习惯
查看>>
【Objective-C】07-自定义构造方法和description方法
查看>>
使用sqlplus创建表空间
查看>>
C#判断操作系统是32位还是64位(超简单)
查看>>
Qt4过渡至Qt5
查看>>
对 JavaScript 进行单元测试的工具
查看>>
图练习-BFS-从起点到目标点的最短步数(sdut 2830)邻接边表
查看>>