https://scut.online/p/289

一个水到飞起的模板数位dp。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; bool notp[2000]; const int MAXS1=200;
const int MAXS2=2000; int a[20];
ll dp[20][MAXS1][MAXS2];
ll dfs(int pos,int s1,int s2,bool lead,bool limit) {
if(pos==-1) {
if(notp[s1]||notp[s2])
return 0;
else
return 1;
}
if(!limit && !lead && dp[pos][s1][s2]!=-1)
return dp[pos][s1][s2];
int up=limit?a[pos]:9;
ll ans=0;
for(int i=0; i<=up; i++) {
ans+=dfs(pos-1,s1+i,s2+i*i,lead && i==0,limit && i==a[pos]);
}
if(!limit && !lead)
dp[pos][s1][s2]=ans;
return ans;
} ll solve(ll x) {
if(x<=0)
return 0; int pos=0;
while(x) {
a[pos++]=x%10;
x/=10;
} return dfs(pos-1,0,0,true,true);
} int main() {
#ifdef Yinku
freopen("Yinku.in","r",stdin);
#endif // Yinku
memset(dp,-1,sizeof(dp));
notp[0]=1;
notp[1]=1;
for(int i=2; i<2000; i++) {
if(!notp[i]) {
for(int j=i+i; j<2000; j+=i) {
notp[j]=1;
}
}
} int T;
scanf("%d",&T);
ll le,ri;
while(T--) {
scanf("%lld%lld",&le,&ri);
printf("%lld\n",solve(ri)-solve(le-1));
}
}

最新文章

  1. Socket实现仿QQ聊天(可部署于广域网)附源码(4)-加入数据库系统搭建完成
  2. 使用rem缩放网页的javascript代码
  3. Visual Studio2008环境下查找C#中方法的“查看所有引用”
  4. Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)一
  5. var和dynamic的区别及如何正确使用dynamic ?
  6. MACOS 答题器,界面跳转
  7. 传递闭包+二进制位运算+floyd(poj2570)
  8. python时间-time模块
  9. Android混淆配置文件规范
  10. Xcode GDB 命令list
  11. Xcode7 新添旧版模拟器方法
  12. bzoj 4013: [HNOI2015]实验比较
  13. 分享一下 常用的转换方法(例如:数字转金钱,文本与html互转等)
  14. .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面
  15. php usort
  16. 关于sendtoback()和bringtofront() 的理解
  17. Centos编译Redis4.0.9源码过程记录
  18. docker 17.09.0-ce 启动更换网络地址
  19. RabbitMQ(3) Java客户端使用
  20. REST 规范

热门文章

  1. jQuery旋转插件jquery.rotate.js 让图片旋转
  2. QuickReport FastReport
  3. 一个可以拖拽的div
  4. python习题-产生8位随机密码要包含大小写及数字
  5. java--xml文件读取(JDOM&amp;DOM4J)
  6. leetcode 3 Longest Substring Without Repeating Characters(滑动窗口)
  7. STL stl_construct.h
  8. 图的Tarjan算法
  9. bzoj 3545: [ONTAK2010]Peaks Kruskal重构树
  10. Netty,Netty