牛客假日團隊賽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 塊金幣,並且,這個數字被醒目地標記在餡餅表面。奶牛們把所有烤好的...