1. 程式人生 > >bzoj1467 Pku3243 clever Y

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&MediumSpace;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)(&amp;x==&amp;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時間中選出一個時間進行搶劫,並計劃搶走