洛谷 P1037 floyd 組合數學 高精度

2021-09-27 13:12:00 字數 1442 閱讀 2442

給出乙個整數n(n<1030)n(n<10^)n(n<1030)和k k k個變換規則(k≤15)(k \le 15)(k≤15)。規則:一位數可變換成另乙個一位數:規則的右部不能為零。例如:n=234n=234n=234。有規則(k=2):2->5

3->6

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

234534

264564

共4 種不同的產生數問題:給出乙個整數 n 和k 個規則。求出:經過任意次的變換(0次或多次),能產生出多少個不同整數。僅要求輸出個數。輸入格式鍵盤輸入,格式為:nkn knk

x1y1x_1 y_1x1​y1​

x2y2x_2 y_2x2​y2​

… …xnynx_n y_nxn​yn​輸出格式螢幕輸出,格式為:111個整數(滿足條件的個數):輸入輸出樣例輸入 #1 複製 234 2

2 53 6

輸出 #1 複製 4

思路:求出n

nn的每一位的數字可以轉換成其他數字的個數(包括它本身),那麼答案就是這個序列的累乘。個數可以用flo

yd

floyd

floy

d fs

dfsdf

s,其實複雜度都差不多,但是沒想到flo

yd

floyd

floy

d的那個演算法。注意用高精度。

#include

using

namespace std;

typedef

long

long ll;

int cnt[15]

;vector<

int> vec[15]

;bool vis[15]

;char s[35]

;int ans[

105]

;int n,tmp,len=1;

void

mul(

int x)

while

(te!=0)

ans[

++len]

=te%

10,te/=10

;}void

dfs(

int u)

}int

main()

ans[1]

=1;for

(int i=

0;i<=

9;i++

)int nn=

strlen

(s);

for(

int i=

0;i)mul

(cnt[s[i]

-'0'])

;for

(int i=len;i>=

1;i--

)printf

("%d"

,ans[i]);

return0;

}

組合數學 洛谷

p1287盒子與球 題意 現有 r 個互不相同的盒子和 n 個互不相同的球,要將這 n 個球放入r 個盒子中,且不允許有空盒子。請求出有多少種不同的放法。資料範圍 對於 100 的資料,保證 0 r n 10,且答案小於 2 31.分析 n個球,從中取出乙個球,有倆種放法,1 bi獨佔乙個盒子,那麼...

洛谷P2822 組合數問題

題目描述 組合數 cmn m在上,n在下 表示的是從 n個物品中選出 m 個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定義,我們可以給出計算組合數 cmn的一般公式 其中 n 1 2 n 特別地,定義 0 1。小蔥想知道...

洛谷 P2822 組合數問題

已知組合數 從 n 個物品中選擇 m 個物品的方案數 c m n c n,m binom frac 其中 n 1 times 2 times 3 times cdots times n specially define 0 1 給定 n m k 對於所有的 0 le i le n 0 le j le...