bzoj1467 Pku3243 clever Y
擴充套件BSGS,模數改成任意數了,本質和一般的還是一樣的,只是需要把X與K推一推公式讓他們互質就好了。
具體細節在程式碼中有體現。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b,p;
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
ll BSGS(ll a,ll b,ll p)
{
a%=p,b%=p;
if(b==1)return 0;
ll cnt=0,t=1;
for(ll g=gcd(a,p);g!=1 ;g=gcd(a,p))
{
if(b%g)return -1;
p/=g,b/=g,t=t*a/g%p;
cnt++;
if(b==t)return cnt;
} //新增加部分
map <ll,ll> E;
ll tmp=1,p1=int(sqrt(p*1.0)+1);
for(ll i=0;i<p1;i++)E[(b*tmp)%p]=i,tmp=(tmp*a)%p;
ll tmp1=t;
for(ll i=1;i<=p1+1;i++)
{
tmp1=(tmp*tmp1 )%p;
if(E.count(tmp1))return (ll)i*p1-E[tmp1]+cnt;
}
return -1;
}
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%lld%lld%lld",&a,&p,&b)!=EOF)
{
if(a==0&&p==0&&b==0)return 0;
if(p==1)
{
if(a==0)printf("1\n" );
else printf("0\n");
continue;
}
if(a==0&&b==0)
{
printf("1\n");
continue;
}
ll ans=BSGS(a,b,p);
if(ans==-1)printf("No Solution\n");
else printf("%lld\n",ans);
}
return 0;
}
相關推薦
[BZOJ1467]Pku3243 clever Y
mil post puts template targe while return eve 0.11 傳送門 傳送門 exbsgs模板。 //Achen #include<algorithm> #include<iostream> #includ
bzoj1467 Pku3243 clever Y
題目 擴充套件BSGS,模數改成任意數了,本質和一般的還是一樣的,只是需要把X與K推一推公式讓他們互質就好了。 具體細節在程式碼中有體現。 #include<bits/stdc++.h>
【BZOJ1467/2480】Pku3243 clever Y/Spoj3105 Mod EXBSGS
sof i++ long mod data -s for scrip input 【BZOJ1467/2480】Pku3243 clever Y/Spoj3105 Mod Description 已知數a,p,b,求滿足a^x≡b(mod p)的最小自然
BZOJ 3243 Clever Y
more lol pmo .html zoj tdi end nav blog Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K
POJ3243:Clever Y——題解
++ code ostream AI names 整數 是的 += cnblogs http://poj.org/problem?id=3243 求最小的非負整數y滿足x^y=k(mod z) 寫完板子之後等待了半個小時poj才終於進入…&hell
POJ-3243-Clever Y-擴充套件Bsgs演算法-已知a,c,p,和a^b=c(mod p),求b
【Description】 Little Y finds there is a very interesting formula in mathematics: XYmod Z=K X^Y mod\:Z=K XYmodZ=K
[BZOJ 1467] [POJ 3243] clever Y
題目描述 小Y發現,數學中有一個很有趣的式子: XYmodZ=KX^Y\ mod\ Z = KXYmodZ=K 給出XXX、YYY、ZZZ,我們都知道如何很快的計算KKK。但是如果給出XXX、ZZZ
[拓展Bsgs] Clever - Y
題目連結 Clever - Y 題意 有同餘方程 \(X^Y \equiv K\ (mod\ Z)\),給定\(X\),\(Z\),\(K\),求\(Y\)。 解法 如題,是拓展 \(Bsgs\) 板子,部分學習內容在這裡 \((Click\ here)\)。 敲完板子就能獲得至少 5
【BSGS】POJ2417[Discrete Logging]&POJ3243[Clever Y]題解
POJ2417 題目概述 求滿足Ax≡B(mod C)的最小x,C是素數。 解題報告 這就是經典的BSGS,由於要求最小的,所以雜湊表儲存時刷個小的就行了。 示例程式 #include<cstdio> #include&l
POJ 3243 Clever Y(擴充套件BSGS,gcd(a,p)!=1)
題目連結: POJ 3243 Clever Y 題意: 跟POJ 2417 Discrete Logging類似,只不過gcd(a,p)!=1. 分析; 初始化cnt=0(消因子輪數),d=1(消掉的gcd乘積). 令tmp=gcd(a,p) 當tm
POJ 3243 Clever Y (求X^Y mod Z = K)
Clever Y Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7301 Accepted: 1807 Description Little Y finds there is a very i
BZOJ_P1467/POJ_P3243 Clever Y(擴充套件BSGS+雜湊)
Time Limit: 4 Sec Memory Limit: 64 MB Submit: 202 Solved: 106 [Submit][Status][Discuss] Description 小Y發現,數學中有一個很有趣的式子: X^Y
POJ 3243 Clever Y 解高次同餘方程
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3104 Accepted: 1495 Description Given a prime P, 2 <= P < 231, an
Meet Y Combinator and Clever
Anyone interested in blockchain is going? Would love to talk to YC partners about their thought on blockchain
(void)(&x==&y)
產生 typeof 指針 ont char class 否則 一個 一個表 #define max(x,y) ({ \ typeof(x) _x = (x); \ typeof(y) _y = (y); \ (void) (&_x == &_
MOD(x,y)
-- uri new nbsp span 精確 ont 除法 sql MOD(x,y) 返回 x 被 y 除後的余數,MOD(x,y) 對於帶有小數部分的數值也起作用,它返回除法運算後的精確余數 mysql> SELECT MOD(31,8), MOD(234,10
POWER(x,y)
select pan sql class style clas blog mysq log POWER(x,y) 用於返回 x 的 y 次方的結果 mysql> SELECT POWER(2,4), POWER(2,-4); +------------+---
HDOJ 4705 Y 樹形DP
please order border ssi ont algorithm ack oid ref DP:求出3點構成鏈的方案數 。然後總方案數減去它 Y Time Limit: 2000/1000 MS (Java/Others) Memory Lim
HTML5-Y音頻與視頻
auto src 3.0 .org 控制器 http oop 標簽 10.6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD
【bzoj4276】[ONTAK2015]Bajtman i Okr?g?y Robin 線段樹優化建圖+費用流
har brush while inf uil mes queue eof div 題目描述 有n個強盜,其中第i個強盜會在[a[i],a[i]+1],[a[i]+1,a[i]+2],...,[b[i]-1,b[i]]這麽多段長度為1時間中選出一個時間進行搶劫,並計劃搶走