poj2417
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 bl
=n(modp)
。我們設l=
kt−m
,其中t=
⌊l−−
√⌋,0
<=
m<
t 。那麼bl
=n(modp)
就等價於bk
t−m=
n(modp
) 即bk
t∗n−
1=bm
(modp)
。我們可以先預處理出所有的bi
(0<=
i記錄在乙個hash表裡,然後列舉k,計算bk
t∗n−
1 的值,在hash表裡找是否有符和條件的m,若有則k∗
t−m 就是答案之一。所有答案中取最小的乙個即可。這就是大步小步演算法。
**:
#include
#include
#include
#include
#include
using namespace std;
#define inf 1000000007
#define mo 1000007
typedef long long ll;
struct nodehash[1000000];
ll t,m,k,p,a,b,x,y,first[mo+1],tot,ans;
void insert(ll x,ll m)
void find(ll x,ll k)
}ll power(ll a,ll b,ll p)
return tmp;
}int main()
ans=inf;
x=power(a,t,p); y=1;
for(k=0;k<=t;k++)
if(ans==inf)puts("no solution");
else
printf("%lld\n",ans);
}return
0;}
uva 11916 大步小步演算法
uva11916 emoogle grid rujia liu include include include include includeusing namespace std const int mod 100000007 const int maxb 500 10 int n,m,k,b,r...
運維創新一小步 企業騰飛一大步
為何要創新運維 目前國內企業都已經形成一定的資訊化規模,不過,隨著資訊化建設的深入,各企事業單位的it系統日趨複雜,品牌繁多 數量眾多的網路裝置 伺服器 中介軟體 業務系統等讓it管理員難以從容應對,即使加班加點的管理 也經常會因裝置出現故障而導致業務的中斷,嚴重影響運維的正常運轉。在企業裡,it部...
運維創新一小步 企業騰飛一大步
為何要創新運維 目前國內企業都已經形成一定的資訊化規模,不過,隨著資訊化建設的深入,各企事業單位的it系統日趨複雜,品牌繁多 數量眾多的網路裝置 伺服器 中介軟體 業務系統等讓it管理員難以從容應對,即使加班加點的管理 也經常會因裝置出現故障而導致業務的中斷,嚴重影響運維的正常運轉。在企業裡,it部...