日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【bzoj2242】[SDOI2011]计算器 EXgcd+BSGS

發(fā)布時(shí)間:2025/5/22 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【bzoj2242】[SDOI2011]计算器 EXgcd+BSGS 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述

你被要求設(shè)計(jì)一個(gè)計(jì)算器完成以下三項(xiàng)任務(wù): 1、給定y,z,p,計(jì)算Y^Z Mod P 的值; 2、給定y,z,p,計(jì)算滿足xy≡ Z ( mod P )的最小非負(fù)整數(shù); 3、給定y,z,p,計(jì)算滿足Y^x ≡?Z ( mod P)的最小非負(fù)整數(shù)。

輸入

輸入包含多組數(shù)據(jù)。

第一行包含兩個(gè)正整數(shù)T,K分別表示數(shù)據(jù)組數(shù)和詢問(wèn)類型(對(duì)于一個(gè)測(cè)試點(diǎn)內(nèi)的所有數(shù)據(jù),詢問(wèn)類型相同)。 以下行每行包含三個(gè)正整數(shù)y,z,p,描述一個(gè)詢問(wèn)。

輸出

對(duì)于每個(gè)詢問(wèn),輸出一行答案。對(duì)于詢問(wèn)類型2和3,如果不存在滿足條件的,則輸出“Orz, I cannot find x!”,注意逗號(hào)與“I”之間有一個(gè)空格。

樣例輸入

【樣例輸入1】
3 1
2 1 3
2 2 3
2 3 3
【樣例輸入2】
3 2
2 1 3
2 2 3
2 3 3

樣例輸出

【樣例輸出1】
2
1
2
【樣例輸出2】
2
1
0


題解

EXgcd+BSGS

第一問(wèn)直接快速冪。

第二問(wèn)需要將xy≡z(mod p)轉(zhuǎn)化為xy+tp=z,進(jìn)而用EXgcd求解。

第三問(wèn)是裸的BSGS。

根據(jù)費(fèi)馬小定理可知如果有解,答案一定小于p。

設(shè)m=√p(向上取整),再設(shè)x=km+b,其中k<m,b<m。

那么就有y^(km+b)≡z(mod p),即y^b≡z/y^km(mod p)。

于是我們可以將所有的y^b mod p加入到map中,然后枚舉k,求出z/y^km,看是否有相同的值在map中即可。

本題特判比較多,具體詳見(jiàn)代碼。

#include <cstdio> #include <cmath> #include <map> using namespace std; typedef long long ll; map<ll , ll> f; map<ll , ll>::iterator it; ll pow(ll x , ll y , ll mod) {ll ans = 1;while(y){if(y & 1) ans = ans * x % mod;x = x * x % mod , y >>= 1;}return ans; } ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a; } void exgcd(ll a , ll b , ll &x , ll &y) {if(!b){x = 1 , y = 0;return;}exgcd(b , a % b , x , y);ll t = x;x = y , y = t - a / b * y; } int main() {int T , k;scanf("%d%d" , &T , &k);while(T -- ){ll y , z , p;scanf("%lld%lld%lld" , &y , &z , &p);switch(k){case 1: printf("%lld\n" , pow(y , z , p)); break;case 2:{y %= p , z %= p; ll t = gcd(y , p) , x1 , x2;if(z % t != 0){printf("Orz, I cannot find x!\n");break;}y /= t , p /= t , z /= t , exgcd(y , p , x1 , x2) , x1 *= z;while(x1 < 0) x1 += p;while(x1 - p >= 0) x1 -= p;printf("%lld\n" , x1);break;}default:{y %= p , z %= p; if(!y){if(!z) printf("1\n");else printf("Orz, I cannot find x!\n");break;}ll m = (ll)ceil(sqrt(p)) , i , flag = 0 , t = 1 , temp;f.clear();for(i = 0 ; i < m ; i ++ ){if(f.find(t) == f.end()) f[t] = i;t = t * y % p;}temp = pow(y , p - m - 1 , p) , t = 1;for(i = 0 ; i <= m ; i ++ ){it = f.find(z * t % p) , t = t * temp % p;if(it != f.end()){printf("%lld\n" , i * m + it->second) , flag = 1;break;}}if(!flag) printf("Orz, I cannot find x!\n");}}}return 0; }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/GXZlegend/p/6999367.html

總結(jié)

以上是生活随笔為你收集整理的【bzoj2242】[SDOI2011]计算器 EXgcd+BSGS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩影院在线 | 69国产精品视频免费观看 | 成年人看的羞羞网站 | 亚洲另类网站 | 大地资源中文在线观看免费版 | 欧美啪视频 | 久久精品这里 | 中文字幕第18页 | 玖玖色在线 | 在线观看色网站 | 亚洲dvd | 亚洲第一综合色 | 日皮视频网站 | 天天曰夜夜曰 | 国产成人在线看 | 欧美在线 | 亚洲黄色精品 | 极品国产91在线网站 | 日韩欧美三级视频 | 在线看日本 | 95看片淫黄大片一级 | 国模私拍大尺度裸体av | 一道本在线 | 欧美一区二区三区免费看 | 91久久精 | 日本大胆裸体做爰视频 | 在线不卡av | 91视频插插插 | 日本在线视频不卡 | 在线观看亚洲一区 | 国产白拍| 嫩草一区二区 | 婷婷综合久久 | 99啪啪| 久热精品在线视频 | 懂色av一区二区三区四区五区 | 中国少妇av | 污免费在线观看 | 欧美日韩三级在线观看 | 天天干 夜夜操 | 神马午夜一区二区 | av成人 | 成人av在线网 | 在线国产黄色 | 2020亚洲天堂| 国产日韩欧美精品 | 久久精品在线视频 | 超碰在线资源 | mm1313亚洲精品 | 久久久久久中文字幕 | 日本少妇b | 国产青草| 亚洲免费观看高清完整版在线 | 黄色录像a| 夜夜嗨av色一区二区不卡 | 国产精品无码内射 | 久久情趣视频 | 午夜视频在线瓜伦 | 免费久久久 | 天天色天天 | 亚洲一区中文字幕永久在线 | 日韩啪啪网 | 成人一级黄色片 | 干操网 | 国产在线观看免费视频软件 | 天天爱夜夜爱 | 大毛片| 日韩一级片中文字幕 | 特大巨交吊性xxxx | 九热视频在线观看 | 日韩播放 | 天堂资源 | 妺妺窝人体色www在线下载 | 天天爽天天操 | 国产精品视频一区二区三区不卡 | 男人天堂中文字幕 | 美女操出白浆 | 婷婷导航| 精品国产欧美日韩 | 91精品推荐| 娇妻玩4p被三个男人伺候电影 | 午夜免费小视频 | 日韩在线视频播放 | 欧美成人精品三级网站 | 欧美v视频 | 国产精品亚洲无码 | 夜夜噜噜噜 | 午夜视频在线观看一区 | 大屁股白浆一区二区三区 | 久久三级网 | 天天综合网天天综合色 | 尤物视频在线播放 | 美女被c出白浆 | 日韩黄色精品视频 | av中文字幕一区二区 | 国产高清一 | 欧美日韩中文字幕一区二区 | 国产一二三在线 | 香蕉网站视频 |