HDU 4507 數字DP 記錄乙個毒瘤錯誤orz

2022-05-29 18:21:09 字數 1367 閱讀 3676

題意:求區間【l,r】滿足以下性質:(1)數字中沒有7,(2)數字和不被7整除,(3)數字本身不被7整除  的所有數字的平方和

先記錄乙個毒瘤錯誤。。。感覺自己好不會設狀態啊。數字dp的狀態自己都不知道是不是對的能不能轉移qaq。

錯誤**:

1 #include2 #include3 #include4

#define ll long long

5using

namespace

std;67

int a[20

];8 ll dp[20][200][10];9

const

int mod = 1e9+7;10

11 ll dfs(int pos, int sum, ll n, bool

lim)

17if (!lim && dp[pos][sum][n%7] != -1) return dp[pos][sum][n%7

];18 ll ans = 0;19

int r = lim ? a[pos] : 9;20

for (int i = 0; i <= r; i++)

24if (!lim) dp[pos][sum][n%7] =ans;

25return

ans;26}

2728

ll solve(ll x)

34return dfs(pos-1, 0, 0, 1

);35}36

37int

main()

46return0;

47 }

view code

ac**:

1 #include2 #include3 #include4

#define ll long long

5using

namespace

std;67

int a[20

];8 ll p[30];9

const

int mod = 1e9+7;10

11struct

sta14 }dp[20][10][10

];15

16 sta dfs(int pos, int sum, int n, bool

lim)

29if (!lim) dp[pos][sum][n] =ans;

30return

ans;31}

3233

ll solve(ll x)

39return dfs(pos-1, 0, 0, 1

).ans;40}

4142

intmain()

53return0;

54 }

HDU 4507 鬼畜級別的數字DP)

題目大意 求指定範圍內與7不沾邊的所有數的平方和。結果要mod 10 9 7 鬼畜 元凶 解題思路 與7不沾邊的數需要滿足三個條件。不出現7 各位數和不是7的倍數 這個數不是7的倍數 這三個條件都是基礎的數字dp。但是這題要統計的不是符合條件個數,而是平方和。也就是說在dp時候,要重建每個數,算出平...

HDU 4507 恨7不成妻(數字dp )

題目 求在一定區間內和7無關的數字的平方和。如果乙個整數符合下面3個條件之一,那麼我們就說這個整數和7有關 1 整數中某一位是7 2 整數的每一位加起來的和是7的整數倍 3 這個整數是7的整數倍 基本思想是 x y 2 x 2 2 x y y 2 維護sum和sqrt sum,以及數量cnt來確定用...

HDU4507 恨7不成妻(數字dp)

給定區間 l r 1 leq l r leq 1e18 求在區間中滿足下列條件的所有數x的平方和 不存在數字7 不是7的倍數 每一位的數字的和也不是7的倍數 數字dp 狀態 位置i,數對7取模j,各個位的和對7取模 是否頂上界 下面的 用記憶化搜尋方式實現,從低位向高位遞進。已知後面i位數滿足的平方...