Codeforces 55D
来源:互联网 发布:电子书免费阅读软件 编辑:程序博客网 时间:2024/05/20 08:00
【题目分析】
数位DP
【代码】
#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <algorithm>#define ll long longusing namespace std;int tt;int sa[2530],num[21];ll l,r;ll dp[21][2520][50];ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}ll lcm(ll a,ll b){return a/gcd(a,b)*b;}inline void init(){ int cnt=0; for (int i=1;i<=2520;++i) if (2520%i==0) sa[i]=++cnt; memset(dp,-1,sizeof dp);}inline ll dfs(int pos,int psum,int plcm,bool flag){ if (pos==0) return psum%plcm==0; if (!flag&&dp[pos][psum][sa[plcm]]!=-1) return dp[pos][psum][sa[plcm]]; int end=flag?num[pos]:9; ll ans=0; for (int i=0;i<=end;++i) { int nsum=(psum*10+i)%2520; int nlcm=plcm; if (i) nlcm=lcm(plcm,i); ans+=dfs(pos-1,nsum,nlcm,flag&&i==end); } if (!flag) return dp[pos][psum][sa[plcm]]=ans; return ans;}inline ll cal(ll x){ memset(num,0,sizeof num); int pos=0; while (x) { num[++pos]=x%10; x/=10; } return dfs(pos,0,1,1);}int main(){ init(); scanf("%d",&tt); while (tt--) { scanf("%I64d%I64d",&l,&r); printf("%I64d\n",cal(r)-cal(l-1)); }}
0 0
- codeforces 55D
- Codeforces 55D
- Codeforces 55D
- codeforces 55D Beautiful numbers
- CodeForces 55D Beautiful numbers
- 【数位DP】 【CodeForces 55D】
- codeforces 55D 数位DP
- Codeforces 55D Beautiful numbers
- CodeForces 55D Beautiful numbers
- codeforces 55D Beautiful numbers
- codeforces 55D Beautiful numbers
- Codeforces 55D 数位DP
- CodeForces 55D Beautiful numbers
- CodeForces 55D - Beautiful numbers
- Codeforces 55d 数位dp
- CodeForces 55D-Beautiful numbers
- CodeForces 55D 数位DP
- Codeforces 55D - Beautiful numbers
- AFNetworking 3.0 源码解析之NSURLSession
- Nutz发送http请求
- 检查Email格式是否合法的正则表达式
- 数据传输截包
- 内存寻址(中)
- Codeforces 55D
- 详解iOS App中调用AVAudioPlayer播放音频文件的用法
- Spring RMI
- android 自定义ViewFlipper轮播广告控件——自定义控件学习(二)
- ADO在VC的MFC下连接数据库并插入数据
- CODE[VS] 1026 逃跑的拉尔夫(模拟)
- 2017腾讯校招面试回忆(成功拿到offer)
- SAP 中国本地化内容汇总
- python mysql使用连接池的通用操作类