hdu2815扩展小步大步攻击
来源:互联网 发布:毒品网络 百度云 编辑:程序博客网 时间:2024/05/18 00:25
题目 : http://acm.hdu.edu.cn/showproblem.php?pid=2815
题目大意 : 求解 a ^ x = b ( mod c)
算法 : 扩展小步大步攻击(AC大牛)
思路 :在介绍扩展小步大步攻击之前, 先说两个要点
1 :如 d = a % b, 则 Gcd(a, b) | d;
证明 : d = a % b = a – a / b * b = ged(a, b)[a / gcd(a, b)
2 :消因子
对于 a ^ x = b ( mod c)
可写成 a^ x = k * c + b
设 g1 = gcd(a, c), 若有解着必有 g1 | b
方程两边同时消去g得
再设g2 = gcd(a, c’), 同理,若有解, 则 g2 | b’
方程两边同时消去g得
同样的操作, 假设第n次后a,c不具有因子,即a, c’’’’’’’ 互素时
则有 a/g(n) * a/g(n-1)……*a/g1 * a^(x – n) = b’’’’’(n) (modc’’’’’(n))
令 d = a/g(n) *a/g(n-1)……*a/g1,
则有 d * a (x - n) = B (modC);
这样, a 与 C 就是互素的了
//////////////////////////////////////////////////////////////////////////////////////
扩展小步大步攻击:a ^ x = b (mod c)
1 :
2 :
3 : m = ceil (sqrt(C))
4 : 将 a ^ (x - n) 化为
5 : for j = 0 ->m
6 : for i = 0 ->m
7 : AA * x = B (mod C)ext_gcd求解x,判断hash中是否有x若有,则答案为I * m + j + n
/////////////////////////////////////////////////////////////////////////////////////////////////
消因子的目的在于将AA与C化为互素的关系,这样用ext_gcd求的x时就只有唯一解了。
而消因子后, 我们的解最小为n,如果小于n有解,则会出现错误, 故有了第一步的操作,先看n以前是否有满足的解,100就足够了
//介意与ac大牛原著一起看http://hi.baidu.com/aekdycoin/blog/item/b317ca18bb24334942a9ad55
提交情况 :runtime error 5 次
感想和经验颇多, 都在思路理了
AC code
#include<stdio.h>
#include<string.h>
#include<math.h>
#defineMAXN65536
#defineI64 __int64
structLINK{
}HASH_LINK[1000000];
I64 ad,head[MAXN];
I64 Gcd(I64 a,I64 b){
return b ? Gcd(b, a % b) :a;
}
I64 Ext_Gcd(I64a, I64 b, I64 &x, I64&y){
}
I64 POWER(I64 a,I64 b, I64 c){
}
voidclear(){
}
I64 hash(I64a){
}
voidINSERT_HASH(I64 i,I64 buf){
}
I64bady_step_giant_step(I64 a, I64 b, I64 c){
}
intmain(){
}
- hdu2815扩展小步大步攻击
- 【bzoj2480】Mod 扩展大步小步
- 大步小步攻击算法_完全版
- BZOJ 2480: Spoj3105 Mod【扩展大步小步
- fzu 1493 小步大步攻击算法
- (扩展)大步小步算法练习 bzoj3239;bzoj2480&bzoj1467
- 大步小步算法(BSGS)及扩展 & bzoj 2480
- hdu 2815 大步小步
- Shank大步小步算法
- Poj2417 大步小步算法
- 浅谈大步小步算法
- POJ 2417 大步小步算法
- POJ 3243 大步小步算法
- uva 11916 大步小步算法
- 大步小步算法 (BSGS算法)
- [省选前题目整理][SGU 261]Discrete Roots(扩展欧几里得+中国剩余定理+原根+大步小步算法)
- 今日一小步,明日一大步
- Ajax一小步,Web开发一大步
- 编写 android.mk 中 LOCAL_C_INCLUDES 的技巧
- fzu 1759 A^B % C
- BP神经网络参数设置及实例
- 衡阳八中 1856 数论 C(n,m) % p
- fzu 1493 小步大步攻击算法
- hdu2815扩展小步大步攻击
- poj1006 中国剩余定理
- poj2447 RSA公钥加密破译
- 2011年03月21日的日记
- activemq-jms --zhuanzai
- poj2406 KMP算法
- poj1961 KMP
- AC自动机(确定性有限状态自动机)
- 2011年04月06日