hdu 2815 Mod Tree 高次方程,n不为素数
Accepted 406MS 8576K 2379 B C++/**
这里加了一点限制,,大体还是一样的,, **/
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
long long a,b,n;
const int maxn = ;
bool Hash[maxn];
long long val[maxn];
long long idx[maxn]; long long gcd(long long a,long long b){
if(b==)
return a;
return gcd(b,a%b);
} void ex_gcd(long long a,long long b,long long &x,long long &y){
if(b==){
x=;
y=;
return ;
}
ex_gcd(b,a%b,x,y);
long long tmp= x-(a/b)*y;
x = y;
y = tmp;
return ;
} void Insert(long long id,long long num){
long long k = num%maxn;
while(Hash[k]&&val[k]!=num){
k++;
if(k==maxn) k = k-maxn;
}
if(!Hash[k]){
Hash[k] = true;
val[k] = num;
idx[k] = id;
}
return;
} long long found(long long num){
long long k = num%maxn;
while(Hash[k]&&val[k]!=num){
k++;
if(k==maxn) k-=maxn;
}
if(Hash[k]){
return idx[k];
}
return -;
} long long baby_step(long long a,long long b,long long n){
long long temp =;
long long i;
for(i=;i<=;i++){
if(temp==b%n) return i;
temp = temp*a%n;
}
long long tmp,d =,cnt=;
memset(Hash,false,sizeof(Hash));
memset(val,-,sizeof(val));
memset(idx,-,sizeof(idx)); while((tmp=gcd(a,n))!=){
if(b%tmp)
return -;
cnt++;
n = n/tmp;
b = b/tmp;
d =d*a/tmp%n;
}
long long cur =;
long long m = ceil(sqrt(n+0.5));
for(i=;i<m;i++){
Insert(i,cur);
cur = cur*a%n;
}
long long x,y;
for(i=;i<m;i++){
ex_gcd(d,n,x,y);
x = x*b%n;
x = (x%n+n)%n;
long long k = found(x);
if(k!=-)
return i*m+k+cnt;
d = d*cur%n;
}
return -;
} int main()
{
while(scanf("%I64d%I64d%I64d",&a,&n,&b)==){
if(b>=n){
printf("Orz,I can’t find D!\n");
continue;
}
if(n==){
printf("0\n");
continue;
}
long long res = baby_step(a,b,n);
if(res==-){
printf("Orz,I can’t find D!\n");
}else{
printf("%I64d\n",res);
}
}
return ;
}
hdu 2815 Mod Tree 高次方程,n不为素数的更多相关文章
- HDU 2815 Mod Tree (扩展 Baby Step Giant Step )
Mod Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 2815 Mod Tree 离散对数 扩张Baby Step Giant Step算法
联系:http://acm.hdu.edu.cn/showproblem.php?pid=2815 意甲冠军: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- hdu 2815 Mod Tree (exBSGS)
http://acm.hdu.edu.cn/showproblem.php?pid=2815 //解 K^D ≡ N mod P #include<map> #include<cma ...
- hdu 2815 : Mod Tree 【扩展BSGS】
题目链接 直接用模板好了.实在不行,反正有队友啊~~~~ #include<bits/stdc++.h> using namespace std; typedef long long LL ...
- HDU 2815 Mod Tree
不会,先搁着…… http://blog.csdn.net/acm_cxlove/article/details/7832197
- HDU 5513 Efficient Tree
HDU 5513 Efficient Tree 题意 给一个\(N \times M(N \le 800, M \le 7)\)矩形. 已知每个点\((i-1, j)\)和\((i,j-1)\)连边的 ...
- Hdu 5379 Mahjong tree (dfs + 组合数)
题目链接: Hdu 5379 Mahjong tree 题目描述: 给出一个有n个节点的树,以节点1为根节点.问在满足兄弟节点连续 以及 子树包含节点连续 的条件下,有多少种编号方案给树上的n个点编号 ...
- HDU 4925 Apple Tree(推理)
HDU 4925 Apple Tree 题目链接 题意:给一个m*n矩阵种树,每一个位置能够选择种树或者施肥,假设种上去的位置就不能施肥,假设施肥则能让周围果树产量乘2.问最大收益 思路:推理得到肯定 ...
- HDU 4871 Shortest-path tree 最短路 + 树分治
题意: 输入一个带权的无向连通图 定义以顶点\(u\)为根的最短路生成树为: 树上任何点\(v\)到\(u\)的距离都是原图最短的,如果有多条最短路,取字典序最小的那条. 然后询问生成树上恰好包含\( ...
随机推荐
- 【Deep Learning】genCNN: A Convolutional Architecture for Word Sequence Prediction
作者:Mingxuan Wang.李航,刘群 单位:华为.中科院 时间:2015 发表于:acl 2015 文章下载:http://pan.baidu.com/s/1bnBBVuJ 主要内容: 用de ...
- 多个Activity之间的切换与数据交互
总结 两个activity之间切换我概括的分为两步: 1. 代码实现切换操作.2.配置中声明另外一个acitivity! 1. 代码实现切换操作 显示定义一个intent 对象,Intent 这个类的 ...
- Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法
makefile的规则 makefile的规则例如以下: target ... : prerequisites ... command ... ... target能够是一个object file(目 ...
- Filemanager 的使用
filemanager的使用包括: 1.创建文件夹 2.删除文件夹 3.写入文件 4.复制文件 5.移动文件 6.删除文件 一.创建文件夹 首先宏的定义一个字符串作为地址的来获取当前的docum ...
- 几个SQL
select sum(`value`) from testtable where value != 'error' AND type ='b' in (select DISTINCT(type) fr ...
- Javascript闭包概念剖析
某种情况下,函数调用依然持有对其原始定义的作用域的引用,这个引用就叫做闭包. function foo(){ var a = 2; function bar(){ console.log(a); } ...
- Problem B: 最少步数
DescriptionA friend of you is doing research on theTraveling Knight Problem (TKP) where you are to f ...
- Codility 1: equilibrium
提交了格灵深瞳的简历后,收到需要先进行一个简单的技术测试的通知,临时抱佛脚,先刷刷上面几道题: 题目要求 A zero-indexed array A consisting of N integers ...
- Java学习之字符串的创建
转自:http://lavasoft.blog.51cto.com/62575/80034/ Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时 ...
- unity3d 2d游戏制作的模式
经过了4个月不懈的努力,我和图灵教育合作的这本3D游戏开发书预计下个月就要出版了.这里MOMO先打一下广告,图灵的出版社编辑成员都非常给力,尤其是编辑小花为这本书付出了很大的努力,还有杨海玲老师, ...