HDU4507 吉哥系列故事 恨7不成妻

2021-08-03 07:40:17 字數 2123 閱讀 7766

單身! 

依然單身! 

吉哥依然單身! 

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

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

sample input

3

1 910 11

17 17

sample output

236

2210

題目dp思路很好想,但麻煩的地方在於其要求的值是符合條件的樹的平方和。 

我們用pra記錄前面位的數字和%7,prb記錄前面位的數字的值%7。加上遍歷時對7的篩除,我們很容易可以找出與7無關的數,但是怎樣求平方和呢?

我們用三個變數 

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。

主要是這個思路啊,一開始想的類似數字dp那樣,儲存乙個當前數取模之後的乙個數。然後最後返回這個數的平方。然而比標準答案總是多搜出來一部分。

這樣的話其實dp值裡面存的就不是數的個數了,而是這些數的平方和。然而這樣其實缺少乙個狀態,那就是當前數模1e9加7之後的數是多少,不過很明顯我們是不可能開出這麼大的乙個陣列的。於是便去看了一下別人是怎麼解的。

感覺完全想不出來啊,好難。。。。。。

找了乙個比較詳細且比較好理解的搬了過來。

#include #include using namespace std;

typedef long long ll;

const ll mod = 1e9+7;

ll l,r;

ll p[20];

struct node

node(){};

}dp[20][7][7];

int digit[20];

node dfs(int len,int sum1,int sum2,bool up)

if(!up && dp[len][sum1][sum2].cnt != -1)return dp[len][sum1][sum2];

node temp,ans(0,0,0);

int n = up?digit[len] : 9;

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

if(!up)dp[len][sum1][sum2] = ans;

return ans;

}ll cal(ll x)

return dfs(len-1,0,0,1).sqsum;

}int main()

return 0;

}

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

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

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

hdu 4507 單身 依然單身!吉哥依然單身!ds級碼農吉哥依然單身!所以,他生平最恨情人節,不管是214還是77,他都討厭!吉哥觀察了214和77這兩個數,發現 2 1 4 7 7 7 7 2 77 7 11 最終,他發現原來這一切歸根到底都是因為和7有關!所以,他現在甚至討厭一切和7有關的數!...

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

題目鏈結 如果乙個整數符合下面 3 個條件之一,那麼我們就說這個整數和7有關 1 整數中某一位是 7 2 整數的每一位加起來的和是 7 的整數倍 3 這個整數是 7 的整數倍 現在問題來了 吉哥想知道在一定區間內和7無關的數字的平方和。l,r leq 10 具體請見題目 典型的數字dp題目。考慮 f...