【數位dp 求滿足的值和】hihocoder 1033 交錯和
Link:http://hihocoder.com/problemset/problem/1033
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 1e9+7;
struct Node{
LL n,s;
}dp[20][10][2][405];
LL power[20];
int bits[20];
void init(){
power[0] = 1;
for(int i = 1; i < 20; i++)
power[i] = (power[i-1]*10)%mod;
for(int pos = 0; pos < 20; pos++)
for(int dig = 0; dig < 10; dig++)
for(int op = 0; op < 2; op++)
for(int sum = 0; sum <= 400; sum++)
dp[pos][dig][op][sum].n=-1, dp[pos][dig][op][sum].s=0;
}
Node dfs(int pos,int dig,bool op,int sum,int limit){
Node res;
res.n = 0, res.s = 0;
if(pos < 0 || sum < -200 || sum > 200)
return res;
if(pos == 0){
if(dig!=sum)
return res;
res.n = 1, res.s = sum;
return res;
}
if(!limit && dp[pos][dig][op][sum+200].n!=-1)
return dp[pos][dig][op][sum+200];
int up = limit ? bits[pos] : 9;
Node temp;
for(int i = 0; i <= up; i++)
{
if(op) temp = dfs(pos-1, i, 1, dig-sum, limit&&(i==up));
else temp = dfs(pos-1, i, i!=0, sum, limit&&(i==up));
res.n += temp.n;
res.s = ( (res.s+temp.s)%mod + (temp.n*dig%mod*power[pos]%mod) )%mod;
}
if(!limit) dp[pos][dig][op][sum+200] = res;
return res;
}
LL solve(LL n,int k)
{
if(n==0) return 0;
int pos = 0;
while(n){
bits[++pos] = n%10;
n/=10;
}
return dfs(pos,0,0,k,1).s;
}
int main()
{
init();
LL l,r;
int k;
cin >> l >> r >> k;
cout << (solve(r,k)-solve(l-1,k)+mod)%mod << endl;
// scanf("%I64d%I64d%d",&l,&r,&k);
// printf("%I64d\n",(solve(r,k)-solve(l-1,k)+mod)%mod);
return 0;
}
相關文章
- 求陣列中是否存在滿足特定和的兩個數字(python & Js)陣列PythonJS
- [DP] 數位DP
- 數位 dp
- 【數位dp】學習
- 數位DP小記
- iOS錄音和播放上傳和下載動畫滿足60秒內的需求iOS動畫
- HDU-1466 計算直線的交點數 DP
- CSS——CSS 值和單位CSS
- CSS--值和單位CSS
- 2419 求最大值和最小值
- HDU 1466 計算直線的交點數(簡單dp)
- vue中自定義指令,限制input值為number和小數點的位數Vue
- 數字陣列最值,總和,平均,中位數 未完待續陣列
- 學習筆記:數位dp筆記
- 數位DP 學習筆記筆記
- 【學習筆記】數位DP筆記
- Dijkstra迪傑斯特拉求最短路和最短路的條數和各個點權值的最大值
- 玩家需求分析:如何滿足玩家的“爭強好勝”和“養成感”?
- 鴻蒙輕核心定時器Swtmr:不受硬體和數量限制,滿足使用者需求鴻蒙定時器
- 加盟頭位資訊平臺需要滿足什麼條件?
- 刷題系類 - Python判斷二叉樹是否存在一條路徑滿足和值要求Python二叉樹
- hdu5435 數位dp(大數的處理)
- 求插值係數
- 1082. 數字遊戲 (數位DP)遊戲
- CodeForces - 628D (數位dp)
- 演算法隨筆——數位DP演算法
- 數值常用的屬性和方法
- 求陣列內所有偶數的和陣列
- 利用Mathemtaica軟體求數列的和AI
- 智慧數字展廳的建設方案需要滿足的條件
- 解析智和網管平臺SugarNMS等保2.0滿足的控制點內容
- 美顏SDK怎麼選擇才能滿足直播和短影片平臺的需求?
- Oracle解決方案滿足企業績效管理和商業智慧需求Oracle
- 【Tire 求字典出現的字首個數】hihocoder 1014 Trie樹
- 字典樹練習(一)hihocoder 1014(求相同字首的數目)
- CodeForces 401D 數位DP
- px、dp和sp,這些單位有什麼區別?
- python演算法(列舉法):如果a + b + c = 1000(a, b, c均為非負整數),求滿足a^2 + b^2 = c^2的所有可能的值。Python演算法