三素数数
題目描述
如果一個數的所有連續三位數字都是大于100的素數,則該數稱為三素數數。比如113797是一個6位的三素數數。
輸入輸出格式
輸入格式:
一個整數n(3 ≤ n ≤ 10000),表示三素數數的位數。
輸出格式:
一個整數,表示n位三素數的個數m,要求輸出m除以10^9 + 9的余數。
輸入輸出樣例
輸入樣例#1: 復制
4
輸出樣例#1: 復制
204
說明
區域動歸QAQ
.
.
.
.
.
程序:
#include<bits/stdc++.h> using namespace std; long long f[10001][11][11],ans=0,n; bool check(int x) {if(x==1) return(false);int mid=sqrt(x);for (int i=2;i<=mid;i++)if (x % i ==0) return(false);return(true); } int main() {memset(f,0,sizeof(f));for (int i=1; i<=9;i++)for (int j=1; j<=9;j++){int tmp=0;for (int k=1; k<=9;k++)if (check(100*k+10*i+j)) tmp++;f[3][i][j]=tmp;}scanf("%lld",&n);for (int i=4; i<=n;i++)for (int k=1; k<=9;k++) for (int e=1; e<=9;e++){for (int j=1;j<=9;j++)if (check(100*j+10*e+k)) f[i][e][k]=(f[i][e][k]+f[i-1][j][e]) % 1000000009;}for (int i=1;i<=9;i++)for (int j=1;j<=9;j++)ans=(ans+f[n][i][j]) % 1000000009;printf("%lld\n",ans); }轉載于:https://www.cnblogs.com/YYC-0304/p/9499972.html
總結