牛客假日團隊賽11(C題產生數)

2021-09-26 06:55:42 字數 1626 閱讀 5640

牛客假日團隊賽11(c題)

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

規則:一位數可變換成另乙個一位數:規則的右部不能為零。

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

2-> 5

3-> 6

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

234534

264564

共 4 種不同的產生數

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

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

輸入格式為:

n kx1 y1

x2 y2

… …xn yn

輸出描述:

乙個整數(滿足條件的個數)

示例1輸入

234 2

2 53 6輸出4

這道題其實是一道noi的題目,要你求乙個數字變換成另乙個,有多少種不同的組合,這很明顯要用到乘法定理(但是我沒想到,剛開始還用dfs),就是算出每個數能變成幾種數,把每個數的變的次數都乘起來,就是答案了;但是這道題,乙個數變的次數可以傳遞,就是2—3,3—4,那麼2—4,相當於傳遞閉包一樣,那麼就要floyd求傳遞閉包了,求得以後利用高精度乘法,高精度卡了很久;

**:

#include

using namespace std;

int dp[15]

[15];

int a[

100]

;//代表每一位數字可以變化的情況

int sum1[

1010];

//高精度陣列

int sum2[

1010];

//高精度陣列

int sum[

1010];

void

chen()

}for

(int i=

0;i<=

1000

;i++

)for

(int i=

0;i<=

1000

;i++)}

void

func

(int p)

}int

main()

for(

int k=

0;k<=

9;k++)}

}for

(int i=

0;i<=

9;i++

) dp[i]

[i]=1;

//相當於不變時也算一種

for(

int i=

0;ilength()

;i++)}

sum2[0]

=1;//賦初值,非常重要

for(

int i=

0;ilength()

;i++

)int ans;

for(

int i=

1000

;i>=

0;i--)}

for(

int i=ans;i>=

0;i--

)printf

("\n");

return0;

}

牛客假日團隊賽 A 乘積最大

今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘號將它分成...

牛客假日團隊賽11 H 過河卒

題目描述 如圖,a 點有乙個過河卒,需要走到目標 b 點。卒行走規則 可以向下 或者向右。同時在棋盤上的任一點有乙個對方的馬 如上圖的c點 該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 c 點上的馬可以控制 9 個點 圖中的p1,p2 p8 和 c 卒不能通過對方馬的控制點。棋盤用...

牛客假日團隊賽5 K

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 題目描述 最近,奶牛們熱衷於把金幣包在麵粉裡,然後把它們烤成餡餅。第i塊餡餅中含有ni 1 ni 25 塊金幣,並且,這個數字被醒目地標記在餡餅表面。奶牛們把所有烤好的...