吉哥系列故事 恨7不成妻

2022-05-29 20:33:17 字數 1646 閱讀 9994

乍一看好像是道數字dp;然而要求的是平方和。

在暫時沒有其他思路的情況下——能不能用數字dp做平方和?

數字dp在搜尋的時候是這麼個樣子的:比如說

abcdefghi

現在搜到:

9982|e|fghi

那麼現在確定了前面的9982,當前這一位和之後的fghi 都不確定。

在這一位上的搜尋結果就覆蓋了efghi 所有的可**況

那麼很顯然地,要求數的平方和也就是這個(9982efghi)的平方和

所以就是(998200000+efghi)的平方和。這個可以拆。

拆出來三個都可以求。

(998200000²想必不用多說;

2×998200000×efghi只需要知道sum(efghi),這個也好求;

efghi²呢?注意到這也是平方和,改變現在的問題讓這個變成子問題就好了。)

現在這道題目被拆解為六塊,分別是三個條件三個返回值

三個條件:

1.不能有某一位是7;

2.數字和不被7整除;

3.數不被7整除

對應的方法:

1.在列舉當前數字的時候直接跳過

if (i==7) continue;

2.傳遞數字和對7取模的餘數sum

3.傳遞(當前確定下來的一部分)數對7取模的餘數ori

if (!pos) ... sum && ori ...

三個值:

1.滿足條件數的個數cnt

2.滿足條件數的和sum

3.滿足條件數的平方和sqsum

對應地,列舉令 pos 位置上的值為 i,有方程:

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 

10 #include 11 #include 12 #include 13

using

namespace

std;

14 typedef long

long

ll;15

const

int maxn=20;16

const ll mod=(ll)(1e9+7

);17

ll bit[maxn],tp[maxn];

1819

struct

node

24}f[maxn][maxn][maxn];

2526 node dfs(int pos,int sum,int ori,bool lead,bool limit)

42return (!limit&&!lead) ? f[pos][sum][ori] =tmp: tmp;43}

4445

ll solve(ll x)

51return dfs(bit[0],0,0,1,1

).sqsum;52}

5354

intmain()

5566

return0;

67 }

吉哥系列故事 恨7不成妻

題意 輸入t組數,每組有兩個數,求出n m區間內不含有7且不能被7整除且各個位數相加之和不被7整除的數的平方和。資料在1 1e18,結果對1e9 7。由於數太大,容易溢位,所以比較麻煩的是要把數拆開。include include include include include include in...

題解 吉哥系列故事 恨7不成妻

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

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

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