codevs 1009 產生數 題解報告

2021-07-23 18:19:18 字數 1752 閱讀 2910

繼續我的刷題路;

題目描述 description

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

規則:

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

規則的右部不能為零。

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

2-> 5

3-> 6

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

234

534

264

564

共 4 種不同的產生數

問題:

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

求出:

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

僅要求輸出個數。

輸入描述 input description

鍵盤輸人,格式為:

n k

x1 y1

x2 y2

… …

xn yn

輸出描述 output description

螢幕輸出,格式為:

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

樣例輸入 sample input

234 2

2 5

3 6樣例輸出 sample output

4資料範圍及提示 data size & hint

看題意,可以想到組合數的問題,,

不過,,

我不會

2333333333333333333

所以 我寫了搜尋

因為 只有 0-9 10個數嘛

每個數有一定的k種變化

用f[i]表示所以最後的答案就是每一位上的數 的變化次數之積;

所以只需要dfs處理出每個數可以擴充套件到的數的個數就好了~~

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 1000000000

#define fi first

#define se second

#define n 100005

#define p 1000000007

#define debug(x) cerr<<#x<<"="<#define mp(x,y) make_pair(x,y)

using

namespace

std;

int n,m,f[101],q[10][10],a[1010];

bool v[10];

long

long sum[10];

long

long ans=1;

long

long dfs(long

long x)

}return ansm;

} int main()

cin>>n;

for(long

long i=1;i<=n;i++)

for(long

long i=1;i<=k;i++)

cout

《相信不難理解,就不寫注釋了。

1009 數字黑洞

給定任乙個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到 乙個新的數字。一直重複這樣做,我們很快會停在有 數字黑洞 之稱的6174,這個神奇的數字也叫kaprekar常數。例如,我們從6767開始,將得到 7766 6677 1...

DOTCPP 問題1009心得

思路二 提交時顯示執行錯誤50 思路三 看似沒有問題,實際oj會報錯 給出乙個不多於5位的整數,要求 1 求出它是幾位數 2 分別輸出每一位數字 3 按逆序輸出各位數字,例如原數為321,應輸出123 輸入乙個不大於5位的數字,輸出三行 第一行 位數 第二行 用空格分開的每個數字,注意最後乙個數字後...

1009 安全路徑

題目描述 衛斯理 經常提及外星人,比如藍血人。在土星星球有很多城市,每個城市之間有一條或多條飛行通道,但是並不是所有的路都是很安全的,每一條路有乙個安全係數 s,s 是在 0和1 間的實數 包括0 1 一條從 u 到 v 的通道 p 的安全度為 safe p s e1 s e2 s ek e1,e2...