POJ-2417-Discrete Logging(BSGS)
B
L
== N (mod P)
Input
Output
Sample Input
5 2 1
5 2 2
5 2 3
5 2 4
5 3 1
5 3 2
5 3 3
5 3 4
5 4 1
5 4 2
5 4 3
5 4 4
12345701 2 1111111
1111111121 65537 1111111111
Sample Output
0
1
3
2
0
3
1
2
0
no solution
no solution
1
9584351
462803587
Hint
B
(P-1)
== 1 (mod P)
for any prime P and some other (fairly rare) numbers known as base-B pseudoprimes. A rarer subset of the base-B pseudoprimes, known as Carmichael numbers, are pseudoprimes for every base between 2 and P-1. A corollary to Fermat's theorem is that for any m
B
(-m)
== B
(P-1-m)
(mod P) .
题解
这道题是裸的BSGS,具体内容可以看hzw的博客—传送门
#include<algorithm>
#include<map>
#include<cstdio>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;
ll p,b,n,s,x,y,m,k;
int exgcd(ll a,ll b){
if (!b){
x=; y=;
return a;
}
int d=exgcd(b,a%b);
ll t=x; x=y; y=t-(a/b)*y;
return d;
}
map<int,int> h;
int main(){
while (~scanf("%lld%lld%lld",&p,&b,&n)){
h.clear();
ll t=(ll)sqrt(p);
s=; h[]=t;
for (int i=;i<=t-;i++){
s=s*b%p;
if (!h[s]) h[s]=i;
}
s=s*b%p;
ll l=1e10,ans=n;
exgcd(s,p);
x=(x+p)%p;
for (int i=;i<=t;i++){
if (h[ans]){
if (h[ans]==t) h[ans]=;
l=i*t+h[ans];
break;
}
ans=ans*x%p;
}
if (l!=1e10) printf("%lld\n",l);
else puts("no solution");
}
return ;
}
POJ-2417-Discrete Logging(BSGS)的更多相关文章
- POJ 2417 Discrete Logging(离散对数-小步大步算法)
Description Given a prime P, 2 <= P < 231, an integer B, 2 <= B < P, and an integer N, 1 ...
- POJ 2417 Discrete Logging (Baby-Step Giant-Step)
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2819 Accepted: 1386 ...
- POJ - 2417 Discrete Logging(Baby-Step Giant-Step)
d. 式子B^L=N(mod P),给出B.N.P,求最小的L. s.下面解法是设的im-j,而不是im+j. 设im+j的话,貌似要求逆元什么鬼 c. /* POJ 2417,3243 baby s ...
- BZOJ 3239 Discrete Logging(BSGS)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3239 [题目大意] 计算满足 Y^x ≡ Z ( mod P) 的最小非负整数 [题解 ...
- BSGS算法+逆元 POJ 2417 Discrete Logging
POJ 2417 Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4860 Accept ...
- poj 2417 Discrete Logging ---高次同余第一种类型。babystep_gaint_step
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2831 Accepted: 1391 ...
- POJ 2417 Discrete Logging ( Baby step giant step )
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3696 Accepted: 1727 ...
- POJ 2417 Discrete Logging BSGS
http://poj.org/problem?id=2417 BSGS 大步小步法( baby step giant step ) sqrt( p )的复杂度求出 ( a^x ) % p = b % ...
- poj 2417 Discrete Logging(A^x=B(mod c),普通baby_step)
http://poj.org/problem?id=2417 A^x = B(mod C),已知A,B.C.求x. 这里C是素数,能够用普通的baby_step. 在寻找最小的x的过程中,将x设为i* ...
- POJ 2417 Discrete Logging 离散对数
链接:http://poj.org/problem?id=2417 题意: 思路:求离散对数,Baby Step Giant Step算法基本应用. 下面转载自:AekdyCoin [普通Baby S ...
随机推荐
- StringBuffer .insert方法输出电话号码格式
package ch11; import java.util.Scanner; /** * Created by liwenj on 2017/7/21. */public class T7 { pu ...
- Spring AOP 通过order来指定顺序
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt398 Spring中的事务是通过aop来实现的,当我们自己写aop拦截的时候 ...
- spring cloud+docker 简单说一说
spring boot 微服务开发工具 spring cloud 微服务框架治理工具集 这么做: 1.搭建spring cloud 基础组件(服务发现,服务注册,服务配置,监控,追踪,API网关) 以 ...
- maven 自我学习笔记
1.常用网站: maven.apache.org http://mvnrepository.com/ 2.命令 mvn -v 查看maven的版本 mvn -compile 在项目的根目录下编译项 ...
- 团队作业8——第二次项目冲刺(Beta阶段)5.22
1.当天站立式会议照片 会议内容: ①:检查总结上次任务完成情况 ②:安排本次任务的分工 ③:反思前三次自己的不足 ④:协商解决代码进度.成员投入时间等问题 2.每个人的工作 工作中遇到的困难: 代码 ...
- 个人作业(3)----个人总结(Alpha阶段)
一.个人总结. 个人完成的任务:在此阶段我完成了用户调研.部分测试以及部分博客书写. 个人及团队心得:经过几周Alpha阶段开发后,我大致了解了开发软件的过程,开发一个软件并没有以往想象中那么简易,在 ...
- 201521123017 《Java程序设计》第2周学习总结
1. 本章学习总结 (1)Arrays和String的用法及其函数的一些运用,例如sort函数,输入多个数字,用Arrays.sort(数组名),对数组中的元素排序,从小到大,与冒泡法对比更加方便使用 ...
- 201521123065《java程序设计》第13周学习总结
1. 本周学习总结 1.协议是端口之间进行网络通信的一种语言规则语法: 2.套接字Socket用于实现客户端与服务器端的连接,实现网络通信,进行数据交换: 3.LocalHost可以用来获取主机地址: ...
- cnpack热键
CnPack的热键为ALt+space,当不自动补齐时按下Alt+space则会补齐
- Shiro第二篇【介绍Shiro、认证流程、自定义realm、自定义realm支持md5】
什么是Shiro shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证.用户授权. spring中有spring security (原名Acegi),是一个权限框架,它和sp ...