博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1799: [Ahoi2009]self 同类分布
阅读量:4957 次
发布时间:2019-06-12

本文共 1414 字,大约阅读时间需要 4 分钟。

数位dp

先从1到162枚举各位数之和

s[i][j][k][l]表示i位数,第一位小于等于j,当前各位数字和为k,当前取模余数为l的方案数

然后脑补一下转移就行了

详见代码

#include 
#include
#include
#include
#include
#include
#define ll long longusing namespace std;ll P;int bin[20];bool vis[20][180][180];ll s[20][10][180][180];ll f(int n,int t,int sum,int mod);void solve(int n,int sum,int mod){ if (n<1) return; if (vis[n][sum][mod]) return; vis[n][sum][mod]=1; for (int i=0;i<10;++i) s[n][i][sum][mod]=f(n-1,9,sum-i,(mod-bin[n]*i%P+P)%P); for (int i=1;i<10;++i) s[n][i][sum][mod]+=s[n][i-1][sum][mod];}ll f(int n,int t,int sum,int mod){ if (sum<0||n*9
<0) return 0; if (n<1) return mod==0; solve(n,sum,mod); return s[n][t][sum][mod];}int a[21],b[21],len0,len1;int main(){ ll L,R; scanf("%lld%lld",&L,&R);++R; for (len0=0;L;L/=10) a[++len0]=L%10; for (len1=0;R;R/=10) b[++len1]=R%10; bin[1]=1; ll ans=0; for (P=1;P<=len1*9;++P){ for (int i=2;i<=len1;++i) bin[i]=bin[i-1]*10%P; ll ans0,ans1; memset(vis,0,sizeof(vis)); for (int k=0;k<2;++k){ swap(ans0,ans1);ans0=0; for (int i=1;i<=max(len0,len1);++i) swap(a[i],b[i]); swap(len0,len1); int now=P,nowmod=0; for (int i=len0;i;--i){ ans0+=f(i,a[i]-1,now,nowmod); now-=a[i];nowmod=(nowmod-a[i]*bin[i]%P+P)%P; } } ans+=ans1-ans0; } printf("%lld\n",ans); return 0;}

  

代码写的好乱……

转载于:https://www.cnblogs.com/wangyurzee7/p/5129644.html

你可能感兴趣的文章
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>
vue router-link子级返回父级页面
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
div 只显示两行超出部分隐藏
查看>>
C#小练习ⅲ
查看>>
电源防反接保护电路
查看>>
arraylist
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
2124: 等差子序列 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>