S number(2016黑龙江省赛J题)
来源:互联网 发布:天际原版捏脸数据 编辑:程序博客网 时间:2024/04/20 09:23
题意:求[L,R]区间内各位数和是质数的数的数量
Sample Input:
2
4 30
49 173
Sample Output:
12
45
代码:
#include <stdio.h>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int dight[20],dp[20][10][200];int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151};int solve(int x){ int i,j,k,ans,sum,len; ans=sum=0,len=1; memset(dight,0,sizeof(dight)); while(x){ dight[len++]=x%10; x/=10; } for(i=len;i>=1;i--){ for(j=0;j<dight[i];j++){ for(k=0;k<36;k++){ if(prime[k]>=sum) ans+=dp[i][j][prime[k]-sum]; } } sum+=dight[i]; //每次加和 } return ans;}int main(){ //dp[i][j][k]表示i位数首位是j和是k int i,j,t,k,l,r; memset(dp,0,sizeof(dp)); for(i=0;i<=9;i++) dp[1][i][i]=1; for(i=2;i<=17;i++){ //预处理 for(j=0;j<=9;j++){ for(k=0;k<=9;k++){ for(l=0;l<=9*i;l++){ if(l>=j) dp[i][j][l]+=dp[i-1][k][l-j]; } } } } scanf("%d",&t); while(t--){ scanf("%d%d",&l,&r); printf("%d\n",solve(r+1)-solve(l)); } return 0;}
连续两年没有做出数位dp真的很让人伤心啊(/▽╲)
1 0
- S number(2016黑龙江省赛J题)
- 2016年黑龙江省赛J题 S number【数位dp模板题】
- 2014黑龙江省赛热身赛Magic number
- 黑龙江省2012年ACM-ICPC省赛J题The least average cost【最小均值回路】
- 第九届黑龙江省赛
- 2014黑龙江省赛总结
- 2015黑龙江省赛记
- 黑龙江省赛总结
- 2016黑龙江省赛problemB *随机数*已知三点求外接圆圆心模板
- 2013年黑龙江省赛C题.Compilation【字符串匹配】
- 2017 黑龙江省赛热身赛 C
- J - Min Number
- 13年黑龙江省 省赛选拔赛 G题 (线段树)
- 2017黑龙江省赛+东北地区赛总结
- 2014黑龙江省赛热身赛Big LCM
- 17年黑龙江省赛的反思
- NJUST 1746 Similar Number(南京邀请赛 J题)
- J S 实现分页
- 笔记____关于网络请求中需要传同名参数的问题
- 51NOD 1179 最大的最大公约数
- Android显示assets目录下的图片
- 使用C#从TFS获取最新版本
- 配置linux虚拟机本地yum源
- S number(2016黑龙江省赛J题)
- 浅谈Handler机制
- java-swing-设置窗体大小
- Shell bash 脚本语法
- MySQL数据库中的多表数据记录查询
- linux虚拟网桥的构建和WAN的连接
- 透过 Linux 内核看无锁编程
- 视屏暂停的时候添加广告
- 面向对象的数据结构--vector 向量