給出乙個整數n(n<
規則:一位數可變換成另乙個一位數:
規則的右部不能為零。
例如:n=234。有規則(k=2):
2->5
3->6
上面的整數234經過變換後可能產生出的整數為(包括原數):
234534
264564
共4 種不同的產生數
問題:給出乙個整數 n 和k 個規則。
求出:經過任意次的變換(0次或多次),能產生出多少個不同整數。
僅要求輸出個數。
鍵盤輸入,格式為:
n kx1 y1
x2 y2
... ...
xn yn
螢幕輸出,格式為:
1個整數(滿足條件的個數):
輸入 #1
234 2
2 53 6
輸出 #1
4
上來二話不說直接爆搜,成功地mle了4個點,剩下的乙個點也成功地wa掉了,震驚之餘看了看資料範圍,算了一下最多有切換思路,仔細想了一下,因為沒有變成0的可能,所以數的位數不會改變,所以所有位上的可能出現的數的個數的乘積就是答案(好繞)
首先遍歷邊,把所有數可能改變的數的個數記錄下來. 然後直接遍歷原字串把每一位可能出現的數的個數乘起來就行了。要用到高精度乘法。。。
accode
#include #include using namespace std;
struct node
edge[20];
int head[20];
int vis[20];
int k[20]; //記錄每種數字可能變成的數字的個數
int cnt=0;
int ans[101];
int len=0;
void addedge(int from,int to)
; head[from]=cnt++;
}void dfs(int p)
}void mul(int t)
while(j)
} //高精乘(寫的好醜。。。)
void getk()
}void getans(string a)
getk();
getans(a);
return 0;
}
洛谷 P1037 產生數
description 給出乙個整數 n n 10 30 和 k 個變換規則 k 15 規則 一位數可變換成另乙個一位數 規則的右部不能為零。例如 n 234。有規則 k 2 2 5 3 6 上面的整數 234 經過變換後可能產生出的整數為 包括原數 234 534 264 564 共 4 種不同的...
洛谷P1037產生數
給出乙個整數n n 2000 和k個變換規則 k 15 規則 1個數字可以變換成另1個數字 規則中,右邊的數字不能為零。例如 n 234,k 2規則為 2 5 3 6 上面的整數234經過變換後可能產生出的整數為 包括原數 234,534,264,564共4種不同的產生數。求經過任意次的變換 0次或...
洛谷P1037 產生數
題目鏈結 本著 水題不可大做 的原則,我直接字串hash 爆搜,成功爆棧。我們發現,依次搜尋每一位能取到的數字個數,最後乘起來即可 乘法原理 然後又爆了乙個點。long long存不下!於是我面向資料程式設計,看到輸出的數後面有很多0 就產生了這個神奇的騙分做法 include include in...