题目地址:Ural 1586
先定义一个prime三维数组来记录素数,若i*100+j*10+k为素数,则标记prime[i][j][k]为1,否则为0.这样对后面的处理很方便。
然后定义一个dp三维数组,dp[n][i][j]表示当前n位的十位数字为i,个位数字为j时的素数个数,这时候状态要从prime[k][i][j]为素数时转移过来,所以状态转移方程为:
if(prime[j][k][h]) dp[i][k][h]+=dp[i-1][j][k]
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include