方程的解 NOI導刊2010提高

2022-09-10 15:36:25 字數 2432 閱讀 4315

題目描述description
佳佳碰到了乙個難題,請你來幫忙解決。

對於不定方程a1+a2+…+ak-1+ak=g(x),其中k≥2且k∈n,x是正整數,g(x)=x^x mod 1000(即x^x除以1000的餘數),x,k是給定的數。我們要求的是這個不定方程的正整數解組數。

舉例來說,當k=3,x=2時,分別為(a1,a2,a3)=(2,1,1)'(1,2,1),(1,1,2)。

輸入輸出格式input/output

輸入格式:

輸入檔案equation.in有且只有一行,為用空格隔開的兩個正整數,依次為k,x。

輸出格式:

輸出檔案equation.out有且只有一行,為方程的正整數解組數。

輸入輸出樣例sample input/output

樣例測試點#1

輸入樣例:

3 2

輸出樣例:

3

說明description
對於40%的資料,ans≤10^16;對於100%的資料,k≤100,x≤2^31-1,k≤g(x)。

noi導刊2010提高

t=x^x=g[x]

a1+a2+a3+...+ak=t

插空法 ans=c(k-1,t-1)

ans=(t-1)!/((t-k)!(k-1)!)

=(t-1)*(t-2)*...*(t-k+1)/(k-1)!

先用高精乘求出分子,再用高精除單精得到結果

var x:longint;

ans,k:longint;

ii,i,j,xx,l,len:longint;

temp:array[0..1000]of longint;

init1,init2,init3:array[0..10000]of integer;

a,b,c,d:longint;

begin 

readln(k,x);

i:=x;

while i>0 do

begin inc(temp[0]);

temp[temp[0]]:=i mod 2;

if i mod 2=1

then i:=(i-1) div 2

else i:=i div 2;

end;

xx:=1;

for i:=temp[0] downto 1 do

if temp[i]=1

then xx:=(((xx mod 1000)*(xx mod 1000)) mod 1000)*(x mod 1000) mod 1000

else xx:=((xx mod 1000)*(xx mod 1000)) mod 1000;

fillchar(init1,sizeof(init1),0);

fillchar(init2,sizeof(init2),0);

fillchar(init3,sizeof(init3),0);

a:=xx-1;

b:=xx-k;

c:=k-1;

init1[0]:=1; init1[1]:=1;

init2[0]:=1; init2[1]:=1;

init3[0]:=1; init3[1]:=1;

for i:=b+1 to a do

begin for j:=1 to init1[0] do

init1[j]:=init1[j]*i;

l:=init1[0]+5;

for j:=1 to l do

begin init1[j+1]:=init1[j+1]+init1[j] div 10;

init1[j]:=init1[j] mod 10;

end;

while init1[l]=0 do dec(l);

init1[0]:=l;

end;

d:=0;

for ii:=c downto 2 do

begin for i:=init1[0] downto 1 do

begin d:=d*10+init1[i];

init1[i]:=d div ii;

d:=d mod ii;

end;

l:=init1[0];

while init1[l]=0 do dec(l);

init1[0]:=l;

end;

for i:=init1[0] downto 1 do

write(init1[i]);

end.

小明搬家 NOI導刊2010提高(05)

小明要搬家了,大家都來幫忙。小明現在住在第n樓,總共k個人要把x個大箱子搬上n樓。最開始x個箱子都在,但是經過一段混亂的搬運已經亂掉了。最後大家發現這樣混亂地搬運過程效率太低了,於是總結出了提高效率的方法。大家的速度都是每分鐘上 或下 一層樓。所有向上走的人手中都拿乙個箱子,所有向下走的人手中都不拿...

淘汰賽制(NOI導刊2010提高 01)

淘汰賽制 noi導刊2010提高 01 題目描述 淘汰賽制是一種極其殘酷的比賽制度。2n名選手分別標號1,2,3,2 n 1,2 n,他們將要參加n輪的激烈角逐。每一輪中,將所有參加該輪的選手按標號從小到大排序後,第1位與第2位比賽,第3位與第4位比賽,第5位與第6位比賽 只有每場比賽的勝者才有機會...

黑匣子 NOI導刊2010提高(06)

題目描述 black box是一種原始的資料庫。它可以儲存乙個整數陣列,還有乙個特別的變數i。最開始的時候black box是空的 而i等於0。這個black box要處理一串命令。命令只有兩種 add x 把x元素放進blackbox get i加1,然後輸出blackhox中第i小的數。記住 第...