給出乙個整數 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的==)
varf: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 的堆上 其他堆上取的紙牌,可以移到相鄰左邊或右邊的堆上。...