18025 小明的密码
时间限制:4000MS 内存限制:65535K
提交次数:0 通过次数:0
题型: 编程题 语言: G++;GCC
Description
小明的密码由N(1<=N<=12)个数字构成,每个数字都可以是0至9中任意一个数字,但小明的密码还有 一个特点就是密码中连续的M(1<=M<=4)个数字的和是质数,现给定M和N,求满足条件的密码共有多少 个?
输入格式
第1行是T,case数量,此后T行,每行两个数,N和M
输出格式
每个case输出一个满足条件的密码总数
输入样例
2 1 1 2 1
输出样例
4 16
#include <iostream> #include <cstdio> #include <cstdlib> #include <math.h> int X[40],A[12]; int count; void is_zhishu() { int i,k,j; X[0]=0; X[1]=0; for(i=2;i<=40;i++) { k=sqrt(i); for(j=2;j<=k;j++) { if(i%j==0) { X[i]=0; break; } } if(j>k) X[i]=1; } } void mima(int n,int m,int cur,int sum) { int i; if(cur==n) { for(i=0;i<=9;i++) { if(X[sum+i]) count++; } return; } else for(i=0;i<=9;i++) { if(cur<m) { A[cur]=i; mima(n,m,cur+1,sum+i-A[cur-m+1]); } else {if(X[sum+i]) { A[cur]=i; mima(n,m,cur+1,sum+i-A[cur-m+1]); } } } } int main() { is_zhishu(); int T; scanf("%d",&T); while(T--) { int n,m; count=0; scanf("%d%d",&n,&m); mima(n,m,1,0); printf("%d\n",count); } return 0; }