dfs 洛谷 P1822 魔法指紋

2022-07-24 05:54:13 字數 1005 閱讀 6716

對於任意乙個至少兩位的正整數n,按如下方式定義magic(n):將n按十進位制順序寫下來,依次對相鄰兩個數寫下差的絕對值。這樣,得到了乙個新數,去掉前導0,則定義為magic(n)。若n為一位數,則magic(n)=n。

例如:magic(5913)=482,magic(1198)=081=81,magic(666)=00=0。

對任意乙個數n,序列n,magic(n),magic(magic(n)),…遲早會變成乙個一位數。最後的這個值稱為數n的magic指紋。

例如,對於n=5913,我們得到序列:5913,482,46,2。所以5913的magic指紋為2。

若乙個數的magic指紋為7,則認為這個數是個幸運數。

現在,給定a,b,計算出[a,b]中有多少個數是幸運數。

輸入格式:

輸入兩行,每行乙個數。第一行是a,第二行表示b。

輸出格式:

輸出[a,b]中有多少個數是幸運數。

輸入樣例#1:

1

9

輸出樣例#1:

1

資料範圍:

對30%資料,b≤10000。

對100%資料,0

1 #include 2 #include 3 #include 4

#define ll long long

5using

namespace

std;

6int a,b,q[40010

],ans,head,tail;

7void dfs(int x,ll y,intk)8

19int last=y/(k/10),p=x%10

;20 x/=10;21

if (last-p>=0) dfs(x,y+k*(last-p),k*10

);22

if (p&&last+p<10) dfs(x,y+k*(last+p),k*10

);23}24

intmain()

25

洛谷 P2387 魔法森林

題目描述 為了得到書法大家的真傳,小 e 同學下定決心去拜訪住在魔法森林中的隱 士。魔法森林可以被看成乙個包含 n 個節點 m 條邊的無向圖,節點標號為 1,2,3,n,邊標號為 1,2,3,m。初始時小 e 同學在 1 號節點,隱士則住在 n 號節點。小 e 需要通過這一片魔法森林,才能夠拜訪到隱...

洛谷 P2387 魔法森林

為了得到書法大家的真傳,小 e 同學下定決心去拜訪住在魔法森林中的隱 士。魔法森林可以被看成乙個包含 n 個節點 m 條邊的無向圖,節點標號為 1,2,3,n,邊標號為 1,2,3,m。初始時小 e 同學在 1 號節點,隱士則住在 n 號節點。小 e 需要通過這一片魔法森林,才能夠拜訪到隱士。魔法森...

洛谷P2387 魔法森林

題目大意 給定乙個 n 個點,m 條邊的無向圖,邊有兩個邊權 a,b,求從 1 號節點到 n 號節點路徑的兩個權值和的最大值最小是多少。題解 對於有兩個屬性的結構的最優化問題,可以考慮先按照其中乙個分量進行排序。接著從小到大列舉這個有序的分量,計算以當前列舉到的值為這一分量的最大值時,全域性的最優解...