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

2022-07-07 10:06:08 字數 1522 閱讀 8243

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

題目大意:

題解:

想到用數字dp來做,用\(presum\)記錄前面位的數字和\(\%7\),\(premod\)記錄前面位的數字的值\(\%7\)

\(cnt\)表示當前狀態下與\(7\)無關的數的個數;

\(sum\)表示當前狀態下與\(7\)無關的數的和;

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

已知上一位的\(sum\),可得到當前的和為:\(nextsum=i\times 10^\times cnt+sum\)(\(i\)是當前選取的數)。

設某個數到第\(i\)位之前的值\(num\),則到第\(i\)位之後值為\(i\times 10^ + num\),則它此時的平方為:

\[(i\times 10^+num)^2 = (i\times 10^)^2+2\times i\times 10^\times num+num^2

\]所以\(cnt\)個數的平方和就是:

\[(i\times 10^)^2\times cnt+2\times i\times 10^\times num\times cnt+num^2\times cnt

\]\[=(i\times 10^)^2\times cnt+2\times i\times 10^\times sum(num)+sum(num^2)

\]\[=(i\times 10^)^2\times cnt+2\times i\times 10^\times sum+sqsum

\]注意在運算中加入取餘,因為取餘的原因,可能結果為負,所以要加上\(mod\)再取餘。

#include #include using namespace std;

#define ll long long

const int mod = 1e9 + 7;

struct node dp[20][10][10];

int digit[20];

ll bit[20];

node dfs(int pos, int presum, int premod, bool limit) ;

}if (!limit && dp[pos][presum][premod].cnt != -1)

int up = limit ? digit[pos] : 9;

node ans = node;

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

}if (!limit) dp[pos][presum][premod] = ans;

return ans;

}void init()

}int cal(ll n)

return cnt;

}int main()

return 0;

}

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

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

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

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

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

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