HDU 4507 恨7不成妻

2021-07-24 22:38:40 字數 1997 閱讀 9549

problem description

單身!

依然單身!

吉哥依然單身!

ds級碼農吉哥依然單身!

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

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

2+1+4=7

7+7=7*2

77=7*11

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

什麼樣的數和7有關呢?

如果乙個整數符合下面3個條件之一,那麼我們就說這個整數和7有關——

1、整數中某一位是7;

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

3、這個整數是7的整數倍;

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

input

輸入資料的第一行是case數t(1 <= t <= 50),然後接下來的t行表示t個case;每個case在一行內包含兩個正整數l, r(1 <= l <= r <= 10^18)。

output

請計算[l,r]中和7無關的數字的平方和,並將結果對10^9 + 7 求模後輸出。

sample input

3

1 910 11

17 17

sample output

236

2210

講道理,我好像好久沒寫部落格了==........

這個題我覺得我很有必要記一下,因為這是我碰到的第乙個以結構體為單元的數字dp

cnt表示當前狀態下的與7無關的數的個數,在搜尋的過程中很容易得到

sum表示當前狀態下的與7無關的數的合

那麼newsum = i*10^len*cnt + sum(i是當前選取的數,用cnt個加上cnt個數的和即sum,便是新的數的和)

sqsum表示當前狀態下與7無關的數的平方和

(i*10^len + num)^2 = (i*10^len)^2 + 2*i*10^len*num + num^2;

而cnt個數的平方和就是

(i*10^len)^2*cnt + sum(num^2) + 2*i*10^len*sum(num)

即(i*10^len)^2*cnt + sqsum + 2*i*10^len*sum。

詳情請見這位

大牛

#include #include #include #include #include #include #include #include using namespace std;

typedef __int64 ll;

ll l,r;

ll a[67],b[22];

const ll mod=1e9+7;

struct ppp

ppp(ll g,ll h,ll p)

ppp(ppp& cc)

}dp[66][9][9];

ppp dfs(ll pos,ll sum/*數字和*/,ll num/*數字*/,bool limit)

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位數滿足的平方...

HDU 4507 吉哥系列故事 恨7不成妻

數字dp專題 題意 統計在 l,r 區間內所有與7無關數字的平方和。什麼樣的數和7有關呢?如果乙個整數符合下面3個條件之一,那麼我們就說這個整數和7有關 1 整數中某一位是7 2 整數的每一位加起來的和是7的整數倍 3 這個整數是7的整數倍 思路 如果是統計區間內數的個數就比較簡單,那麼我們來考慮一...