Discrete Logging

POJ - 2417

题意:给P,B,N,求最小的L使得 BL≡N (mod P),其中P是素数。

Baby Step Giant Step

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <cmath>
 5 #define ll long long
 6 using namespace std;
 7 const int mod=99991;
 8 ll head[mod],nex[mod];
 9 ll cnt;
10 ll hs[mod],id[mod];
11 void init(){
12     memset(head,-1,sizeof(head));
13     cnt=0;
14 }
15 void insert_(ll x,ll i){
16     hs[cnt]=x;id[cnt]=i;
17     ll u=x%mod;
18     nex[cnt]=head[u];
19     head[u]=cnt++;
20 }
21 ll find_(ll x){
22     int u=x%mod;
23     for(int i=head[u];~i;i=nex[i]){
24         if(hs[i]==x) return id[i];
25     }
26     return -1;
27 }
28 //求解A^x≡B(mod C),返回x,若无解返回-1
29 ll bsgs(ll a,ll b,ll c){
30     if(b==1) return 0;
31     ll m=ceil(sqrt(c*1.0));
32     ll q=1;
33     for(ll i=0;i<=m;i++){
34         if(i==0) insert_(b%c,i);
35         else{
36             q=q*a%c;
37             insert_(q*b%c,i);
38         }
39     }
40     ll temp=1;
41     for(ll i=1;i<=m;i++){
42         temp=temp*q%c;
43         ll j=find_(temp);
44         if(j!=-1) return i*m-j;
45     }
46     return -1;
47 }
48 ll a,b,c;
49 int main(){
50     while(scanf("%lld%lld%lld",&c,&a,&b)!=EOF){
51         init();
52         ll ans=bsgs(a,b,c);
53         if(ans!=-1) printf("%lld\n",ans);
54         else puts("no solution");
55     }
56 }

View Code

转载于:https://www.cnblogs.com/yijiull/p/7385093.html

Discrete Logging POJ - 2417(BSGS)相关推荐

  1. A - Expanding Rods POJ - 1905(二分)

    A - Expanding Rods POJ - 1905(二分) 题目 Problem Description When a thin rod of length L is heated n deg ...

  2. Event Logging 技术简介(转载)

    1.     EVENT LOGGING概述 当错误发生时,系统管理员或技术支持需要知道错误原因是什么,如何恢复丢失数据和阻止错误复现. WINDOWS的Event-logging服务为此提供了解决方 ...

  3. POJ 2386(DFS)

    深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 举例说明之:下图是一个无向 ...

  4. poj 滑雪(DFS)||(DP+递归)

    滑雪 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael ...

  5. Ultra-QuickSort POJ 2299(归并排序)

    http://acm.hust.edu.cn/vjudge/contest/124435#problem/D 题意:给出一个长度为n的数列,你每一次可以随意交换其中两个数字的位置.问你至少交换几次,才 ...

  6. poj 2415(BFS)

     题意: 有一种游戏,共有三个piece(不妨称为棋子),棋盘是由N个点构成的完全图,边有颜色.每次可以移动一个棋子,移动时必须满足棋子走过的边的颜色和其他两个棋子之间的连边的颜色一致.求把三个棋 ...

  7. poj 2010(优先队列)

    题意: 奶牛大学:奶大招生,从C头奶牛中招收N头.它们分别得分score_i,需要资助学费aid_i.希望新生所需资助不超过F,同时得分中位数最高.求此中位数. 解题思路:这里要求最大中位数,中位数肯 ...

  8. POJ 1091(数论)

    题目大意是给定两个整数n和m,求出长度为n+1满足条件的数列data的个数,数列的要求下: 1)1<=data[i]<=m,for1<=i<=n 2)data[n+1]=m; ...

  9. Cheapest Palindrome POJ - 3280(动态规划*)

    题意:  给出一个字符串,要求将其修改成一个回文字符串,给出修改某种字母(添加或删除)的价值,求最小使其成为回文字符串的价值.  题解:  感觉是求最长回文子序列的变形,然而刚开始想着用类似于求最长回 ...

最新文章

  1. android百度地图更换定位图标,android百度地图定位,改变MyLocationOverlay默认图标(原始为蓝色点)(两种方法)...
  2. 嵌入式系统之温限使用
  3. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
  4. 昆仑通态9针通讯口定义_MCGS昆仑通态触摸屏常见问题(4)
  5. [HDOJ3998] Sequence(DP,最大流)
  6. cordova-plugin-themeablebrowser 0.2.17 ThemeableBrowserionic跳转外链插件在ios中heardBar会遮住内容的bug...
  7. Nodejs - 如何用 eventproxy 模块控制并发
  8. mysql隔离级别与锁,接口并发响应速度的关系(2)
  9. k8s之创建etcd集群
  10. easyui 动态添加标签页,总结
  11. .net反混淆脱壳工具de4dot的使用
  12. As Manufacturers Buckle, Winners Emerge From Havoc
  13. 服务器抓不到mrcp协议,MRCP协议
  14. java程序员月薪3万需要掌握哪些技术?技术水平需要到什么程度?
  15. 魅族20值得入手吗 魅族20参数配置
  16. 【干货福利】67个拯救web开发者的工具、库和资源!——爱创课堂
  17. CAD中插入外部参照字体会变繁体_提高CAD绘图效率,外部参照你真的懂?
  18. 神牛闪光灯TT865/V850II 860II Sony热靴口损坏,更换新热靴口
  19. 手机端搜狗输入法语音转文字的体验报告
  20. Fiddle抓包工具使用

热门文章

  1. sgm3157功能_SGM3157_SGM3157供应商_价格_Datasheet_pdf资料-IC资料网
  2. 图形显卡_选核芯显卡还是独立显卡?这才是决定笔记本电脑性能的关键
  3. linux ssh服务,Linux配置SSH服务以便实现远程连接
  4. 查询已有链表的hashmap_面试官再问你 HashMap 底层原理,就把这篇文章甩给他看...
  5. css grid布局增加边框,CSS Grid中每行之后的边框
  6. python从数据库取数据 显示字段名_如何在python中将SQL数据库中的字段名放入列表中...
  7. remote: Incorrect username or password ( access token )
  8. c#获取对象的唯一标识_DDD领域驱动设计实战 - 创建实体身份标识的常用策略
  9. 【youcans 的 OpenCV 例程 200 篇】101. 自适应中值滤波器
  10. 实践平台linux,关于构造Linux系统实践平台的设想