\(description:\)
給出兩個數a,b,求出\([a,b]\)中各位數字之和能整除原數的數的個數。$sample $ \(input:\)
10 19\(sample\)
\(output:\)
\(solution:\)設計狀態 \(f[len][sum][res]\) 表示倒數還有 \(i\) 位要做,當前的和是 \(sum\) ,摸掉模數後剩下的數是 \(res\),
那麼我們直接暴力列舉模數,\(len=0\) 最後判斷一下是否 \(sum=mod\)
\(\&\&\)
\(res=0\) 這個時候可以吧答案返回為 \(1\) 。
那麼再套個板子就。。。
#include#define int long long
using namespace std;
int a,b;
const int n=20+1,m=200+1;
int f[n][m][m],digit[n];
inline int dfs(int len,int sum,int res,int p,bool limit)
if(!limit && f[len][sum][res]!=-1) return f[len][sum][res];
int ret=0,up_bound=(limit)?digit[len]:9;
for(int i=0;i<=up_bound;++i)
ret+=dfs(len-1,sum+i,(res*10+i)%p,p,limit&&i==up_bound);
return f[len][sum][res]=ret;
}inline int solve(int n)
for(int p=1;p<=9*cnt;++p)
return ret;
}signed main()
P4127 AHOI2009 同類分布
給出兩個數a,b a,b,求出 a,b a b 中各位數字之和能整除原數的數的個數。發現題目有兩個變數 數字之和 原數於是必須想辦法設計乙個只有一種變數的數字dp,發現唯有固定數字之和才可以在dfs中將取模作為狀態方便地轉移 記搜元素 當前數字 數字之和 原數的模值 include define r...
題解 P2051 AHOI2009 中國象棋
題目鏈結 題目大意 求在 n 行 m 列的棋盤上放置若干個炮使得它們互不攻擊的方案數,對 9999973 取模 動態規劃,計數 分析 沒有炮互相攻擊等價於沒有三個炮在同一行 列 考慮用 f i m 1 m 2 表示前 i 行,有 m 1 列有乙個炮,m 2 列有兩個炮的方案數 可以用刷表法降低思維難...
AHOI2009 同類分布 題解(數字DP)
題目大意 求 l,r 中各位數之和能被該數整除的數的個數。0 leq l leq r leq 10 顯然數字dp。搜尋時記錄 pos 表示當前位置,sum 表示各位數字之和,st 表示原數,limit 表示最高位限制。如果有時間我會寫一篇部落格學習數字dp,希望不要咕咕 轉移自然是 dfs pos ...