數字dp 恨7不成妻

2021-09-12 17:19:57 字數 2287 閱讀 9890

【題目描述】

單身!依然單身!

吉哥依然單身!

ds 級碼農吉哥依然單身!

所以,他平生最恨情人節,不管是 214 還是 77 ,他都討厭!

吉哥觀察了 214 和 77 這兩個數,發現:

2+1+4=7

7+7=7×2

77=7×11

最終,他發現原來這一切歸根到底都是因為和 7 有關!所以,他現在甚至討厭一切和 7 有關的數!

什麼樣的數和 7 有關呢?如果乙個整數符合下面三個條件之一,那麼我們就說這個整數和 7 有關:

整數中某一位是 7 ;

整數的每一位加起來的和是 7 的整數倍;

這個整數是 7 的整數倍。

現在問題來了:吉哥想知道在一定區間內和 7 無關的數字的平方和。

【輸入】

輸入資料的第一行是測試資料組數 t ,然後接下來的 t 行表示 t 組測試資料。

每組資料在一行內包含兩個正整數 l,r

【輸出】

對於每組資料,請計算 [l,r] 中和 7 無關的數字的平方和,並將結果對 109+7 取模後輸出。

【樣例輸入 】

31 9

10 11

17 17

【樣例輸出】

2362210提示

對於全部資料,1≤t≤50,1≤l≤r≤1018

顯然是數字dp的題。

限制條件都是很樸素的,常規操作解決。

那麼這道題的問題在於我們需要維護平方和。

那麼對於當前的第p位,平方和:

q su

m=∑(

ai+b

∗10p

−1

)qsum=\sum(ai+b*10^)

qsum=∑

(ai+

b∗10

p−1)

其中ai表示p-1位搜到的每個合法的數。

那麼拆開我們可以得到:

q su

m=∑a

i2+∑

(b∗1

0p−1

)2+2

∗(b∗

10p−

1)∗∑

(ai)

qsum=\sum ai^+\sum (b*10^)^+2*(b*10^)*\sum(ai)

qsum=∑

ai2+

∑(b∗

10p−

1)2+

2∗(b

∗10p

−1)∗

∑(ai

)對於當前狀態,b的10的冪顯然已知。

對於第一項,我們直接維護平方和;

對於第二項,我們需要維護ai的個數;

對於第三項,我們需要維護ai的和;

因此問題就解決了。

**:

#include

#include

#include

#include

#include

#include

#define re register

#define ll long long

using

namespace std;

ll n,m,a,b,c;

ll mod=

1e9+7;

struct nodef[20]

[7][

7];//位數 數字之和 原數mod7的餘數

ll q[

10001

],len=0;

ll lo[

10001];

node dfs

(ll pos,ll sum1,ll sum2,

bool lim)if(

!lim && f[pos]

[sum1]

[sum2]

.num!=-1

)return f[pos]

[sum1]

[sum2]

; ll up=lim?q[pos]:9

; ll sum=

0,qsum=

0,num=0;

for(ll re i=

0;i<=up;i++)if

(!lim)f[pos]

[sum1]

[sum2]

=(node)

;return

(node);}

ll ask

(ll x)

return

dfs(len,0,

0,1)

.qsum;

}int

main()

}

數字dp(恨7不成妻)

hdu 4507 吉哥系列故事 恨7不成妻 數字dp 思路 想必普通的統計滿足條件的個數都會吧,這裡就不在贅述了,dp i j k 代表長度為i,數字對7取餘數為j,數字各個位數加起來對7取餘數k 僅僅用dp i j k 的值代表個數是不能得到答案的,還要統計滿足條件的和還有平方和 開結構體,維護和...

恨 7 不成妻

求出一段區間內與 7 無關的數的平方和,我們定義這個數與 7 有關當且僅當這個數滿足下列條件之一 1 某一位為 7 2 數字和為 7 的倍數 3 這個數本身是 7 的倍數。這題並不算裸的數字 dp 題,顯然如果對於計數我們很容易得到這個區間內滿足條件的個數,而為了使數字 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來確定用...