国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

bzoj 1965: [Ahoi2005]SHUFFLE 洗牌 (快速冪)

2019-11-08 19:35:47
字體:
供稿:網(wǎng)友

1965: [Ahoi2005]SHUFFLE 洗牌

Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 656  Solved: 405[Submit][Status][Discuss]

Description

為了表彰小聯(lián)為Samuel星球的探險所做出的貢獻,小聯(lián)被邀請參加Samuel星球近距離載人探險活動。 由于Samuel星球相當(dāng)遙遠,科學(xué)家們要在飛船中度過相當(dāng)長的一段時間,小聯(lián)提議用撲克牌打發(fā)長途旅行中的無聊時間。玩了幾局之后,大家覺得單純玩撲克牌對于像他們這樣的高智商人才來說太簡單了。有人提出了撲克牌的一種新的玩法。 對于撲克牌的一次洗牌是這樣定義的,將一疊N(N為偶數(shù))張撲克牌平均分成上下兩疊,取下面一疊的第一張作為新的一疊的第一張,然后取上面一疊的第一張作為新的一疊的第二張,再取下面一疊的第二張作為新的一疊的第三張……如此交替直到所有的牌取完。 如果對一疊6張的撲克牌1 2 3 4 5 6,進行一次洗牌的過程如下圖所示:  從圖中可以看出經(jīng)過一次洗牌,序列1 2 3 4 5 6變?yōu)? 1 5 2 6 3。當(dāng)然,再對得到的序列進行一次洗牌,又會變?yōu)? 4 6 1 3 5。 游戲是這樣的,如果給定長度為N的一疊撲克牌,并且牌面大小從1開始連續(xù)增加到N(不考慮花色),對這樣的一疊撲克牌,進行M次洗牌。最先說出經(jīng)過洗牌后的撲克牌序列中第L張撲克牌的牌面大小是多少的科學(xué)家得勝。小聯(lián)想贏取游戲的勝利,你能幫助他嗎?

Input

有三個用空格間隔的整數(shù),分別表示N,M,L (其中0< N ≤ 10 ^ 10 ,0 ≤ M ≤ 10^ 10,且N為偶數(shù))。

Output

單行輸出指定的撲克牌的牌面大小。

Sample Input

6 2 3

Sample Output

6

HINT

Source

Day1

[Submit][Status][Discuss]

題解:快速冪

其實是道規(guī)律題啦。

一次洗牌之后位置x會變換到位置2*x%(n+1)

所以x*(2^m)=L (mod n+1)

2是偶數(shù),n+1是奇數(shù),所以兩者一定互質(zhì),2^m也一定與n+1互質(zhì)。

我們其實只需要知道2在模n+1意義下的的逆元,2*x+(n+1)*y=1 x的最小正整數(shù)解就是當(dāng)y=-1時,x=n/2+1

所以這道題的答案就是(n/2+1)^m*L %(n+1)

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define LL long long using namespace std;LL n,m,l;LL quickpow(LL num,LL x,LL p){	LL base=num%p; LL ans=1;	while (x) {		if (x&1) ans=ans*base%p;		x>>=1;		base=base*base%p;	}	return ans;}int main(){	cin>>n>>m>>l;	PRintf("%I64d/n",quickpow(n/2+1,m,n+1)*l%(n+1));}


上一篇:C語言點滴積累

下一篇:ctk加載插件

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青铜峡市| 宣化县| 尼木县| 康保县| 闵行区| 沂南县| 鸡泽县| 会理县| 翁牛特旗| 依兰县| 年辖:市辖区| 鹰潭市| 紫金县| 浦城县| 江安县| 镇巴县| 渝北区| 岳阳市| 新郑市| 武义县| 昌江| 三穗县| 丽水市| 雅江县| 交城县| 旬邑县| 黔南| 安福县| 镇远县| 镇安县| 和田县| 都江堰市| 文昌市| 通城县| 金华市| 宽城| 肥城市| 汉源县| 清镇市| 周至县| 北京市|