description
牧羊人a和牧羊人b總是很無聊,所以他們要玩乙個遊戲。a有a隻羊,b有b隻羊。
他們想要知道a^b的因子和是多少。
這就很為難兩個牧羊人了,由於答案太大,你能不能告訴我答案取模9901的數。
input
僅一行,為兩個正整數a和b。
output
a^b的因子和對9901的餘數。
solution
對於100%的資料,我們將a進行質因數分解,將每個質因子的指數乘上b,
最後的答案就是等比數列的和,但是由於涉及取模,所以我們除法要用逆元。
在下比較菜,記一下逆元怎麼用:
**
1const
2 mo=9901;3
var4
n,m,nm,ans:longint;
5function
mi(x,tk:int64):longint;
6var
7t:int64;
8begin
9 t:=1;10
while tk>0
do11
begin
12if tk mod
2=1then
13 t:=(t*x) mod
mo;14 x:=(x*x) mod
mo;15 tk:=tk div2;
16end;17
exit(t);
18end;19
20procedure
main;
21var
22i,t,j,tt,kk:longint;
23begin
24 i:=2; t:=n; ans:=1;25
while t<>1
do26
begin
27 j:=0;28
while t mod i=0
do29
begin
30inc(j);
31 t:=t div
i;32
end;
33if j>0
then
34begin
35 tt:=mi(i,j*m+1)-1
;36 kk:=mi(i-1,mo-2
);37 ans:=ans*(tt*kk) mod
mo;38
end;
39inc(i);
40end;41
end;
4243
begin
44 assign(input,'
sheep.in');
45 assign(output,'
sheep.out');
46reset(input);
47rewrite(output);
48readln(n,m);
49main;
50writeln(ans);
51close(input);
52close(output);
53end.
NOIp模擬 數列
數列 sequence.pas c cpp 問題描述 雖然msh長大了,但她還是很喜歡找點遊戲自娛自樂。有一天,她在紙上寫了一串數字 1,1,2,5,4。接著她擦掉了乙個1,結果發現剩下1,2,4都在自己所在的位置上,即1在第1位,2在第2位,4在第4位。她希望擦掉某些數後,剩下的數列中在自己位置上...
NOIp模擬 數對
傳送門 很神的dpdp dp題。首先要確定乙個dpdp dp的順序保證答案的正確性。對於兩個元素,分四種情況討論它們的關係 如果a i bjan db i a i leqslant b j and b i a j ai bj and bi 那麼i ii必須排在j jj的前面。如果a i bj and...
NOIP模擬 數球(思維題)
小a有n個球,編號分別為1到n,小a每次都會從n個球中取出若干個球,至少取乙個,至多取n個,每次取完再放回去,需要滿足以下兩個條件。1 每次取出的球的個數兩兩不同。2 每次取出的球的集合兩兩不包含。包含是指,對於兩次取球,對於取的數目少的那次取球的所有球都出現在取的數目多的那次取球中,例如 1,2 ...