codeves天梯 產生數

2021-07-27 08:21:01 字數 1229 閱讀 7653

給出乙個整數 n(n<10^30) 和 k 個變換規則(k<=15)。

規則:一位數可變換成另乙個一位數:

規則的右部不能為零。

例如:n=234。有規則(k=2):

2-> 5

3-> 6

上面的整數 234 經過變換後可能產生出的整數為(包括原數):

234534

264564

共 4 種不同的產生數

問題:給出乙個整數 n 和 k 個規則。

求出:經過任意次的變換(0次或多次),能產生出多少個不同整數。

僅要求輸出個數。

分析:這題真心不難==,仔細看一下題目就是給出一些單向邊,詢問兩個點之間是否聯通,統計聯通數,最後乘法原理相乘即是答案。數字只能在0至9之間轉換,就直接用floyed做就好了。(其實覺得資料水了,這種暴力的方法是不能判斷首位是否轉換為0的==)

var

f:array[0..9,0..9] of boolean;

sum:array[0..9] of longint;

s,a:string;

k,x,y,i,j,l:longint;

ans:int64;

begin

readln(s);

for i:=1 to length(s) do

if s[i]<>' ' then

a:=a+s[i]

else break;

delete(s,1,i);

val(s,k);

for i:=1 to k do

begin

readln(x,y);

f[x,y]:=true;

end;

for i:=0 to 9 do

f[i,i]:=true;

for l:=0 to 9 do

for i:=0 to 9 do

for j:=0 to 9 do

if (f[i,l]) and (f[l,j]) then

f[i,j]:=true;

for i:=0 to 9 do

for j:=0 to 9 do

if f[i,j] then

inc(sum[i]);

ans:=1;

for i:=1 to length(a) do

ans:=ans*sum[ord(a[i])-48];

writeln(ans);

end.

codeves天梯 麥森數

形如2p 1的素數稱為麥森數,這時p一定也是個素數。但反過來不一定,即如果p是個素數,2p 1不一定也是素數。到1998年底,人們已找到了37個麥森數。最大的乙個是p 3021377,它有909526位。麥森數有許多重要應用,它與完全數密切相關。任務 從檔案中輸入p 1000 計算2p 1的位數和最...

codeves天梯 校門口的數

某校大門外長度為 l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0的位置,另一端在 l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始...

codeves天梯 均分紙牌

有 n 堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為 n 的倍數。可以在任一堆上取若於張紙牌,然後移動。移牌規則為 在編號為 1 堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌,只能移到編號為 n 1 的堆上 其他堆上取的紙牌,可以移到相鄰左邊或右邊的堆上。...