日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

吉哥系列故事——恨7不成妻(数位 DP)

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吉哥系列故事——恨7不成妻(数位 DP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

∑i=1n(pre+suc)2∑i=1npre2+suc2+2×pre×sucn×pre2+∑suc2+2×pre∑suc\sum_{i = 1} ^{n}(pre + suc) ^ 2\\ \sum_{i = 1} ^{n} pre ^ 2 + suc ^ 2 + 2 \times pre \times suc\\ n \times pre ^ 2 + \sum suc ^ 2 + 2 \times pre \sum suc\\ i=1n?(pre+suc)2i=1n?pre2+suc2+2×pre×sucn×pre2+suc2+2×presuc
所以考慮維護cnt,sum,sum2cnt, sum, sum ^ 2cnt,sum,sum2即可。

#include <bits/stdc++.h>using namespace std;const int mod = 1e9 + 7;inline int add(int x, int y) {return x + y < mod ? x + y : x + y - mod; }inline int sub(int x, int y) {return x >= y ? x - y : x - y + mod; }struct Res {int cnt, sum1, sum2; }f[20][10][10];int num[20], p[20], cnt;Res dfs(int pos, int sum, int remain, int flag) {if (!pos) {if (sum != 0 && remain != 0) {return {1, 0, 0};}else {return {0, 0, 0};}}if (!flag && f[pos][sum][remain].cnt != -1) {return f[pos][sum][remain];}Res ans = {0, 0, 0};int nex = flag ? num[pos] : 9;for (int i = 0; i <= nex; i++) {if (i == 7) {continue;}Res cur = dfs(pos - 1, (sum + i) % 7, (remain * 10 + i) % 7, i == nex && flag);ans.cnt = add(ans.cnt, cur.cnt);int s = 1ll * i * p[pos] % mod;ans.sum1 = add(ans.sum1, add(1ll * s * cur.cnt % mod, cur.sum1));ans.sum2 = add(add(ans.sum2, 1ll * cur.cnt * s % mod * s % mod), add(cur.sum2, 2ll * s % mod * cur.sum1 % mod));}if (!flag) {f[pos][sum][remain] = ans;}return ans; }int calc(long long x) {cnt = 0;while (x) {num[++cnt] = x % 10;x /= 10;}return dfs(cnt, 0, 0, 1).sum2; }int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);for (int i = 0; i < 20; i++) {for (int j = 0; j < 10; j++) {for (int k = 0; k < 10; k++) {f[i][j][k].cnt = -1;}}}p[1] = 1;for (int i = 2; i < 20; i++) {p[i] = 1ll * p[i - 1] * 10 % mod;}int T;scanf("%d", &T);while (T--) {long long l, r;scanf("%lld %lld", &l, &r);printf("%lld\n", sub(calc(r), calc(l - 1)));}return 0; }

總結

以上是生活随笔為你收集整理的吉哥系列故事——恨7不成妻(数位 DP)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。