Threeprime Numbers
2013-08-06 17:31
369 查看
1586. Threeprime Numbers
Time limit: 1.0 secondMemory limit: 64 MB
Rest at the sea is wonderful! However, programmer Pasha became awfully bored of lying on a beach in Turkey; so bored that he decided to count the quantity of three-digit prime numbers. This turned out
to be so interesting that he then started to study threeprime numbers. Pasha calls an integer a threeprime number if any three consecutive digits of this integer form a three-digit prime number. Pasha had already started working on the theory of the divine
origin of such numbers when some vandals poured water on Pasha and cried some incomprehensible words like “Sonnenstich!”, “Colpo di sole!”, and “Coup de soleil!”
You are to continue Pasha’s work and find out how often (or rare) threeprime numbers are.
Input
The input contains an integer n (3 ≤ n ≤ 10000).
Output
Output the quantity of n-digit threeprime numbers calculated modulo 109 + 9.
Sample
input | output |
---|---|
4 | 204 |
/**DP = =!**/ /**思路:用dp[j][k]表示位数时,最后两位是k,且满足题目要求的数字的个数**/ #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define maxn 10010 #define mod 1000000009 bool prim[1010]; long long dp[maxn][100]; int n; void deal()//求出100~1000内的素数,并初始化dp[3] { prim[2]=0; for(int i=2;i<1000;i++) if(!prim[i]) { for(int k=2 ;i*k<1000;k++) prim[k*i]=1; if(i>=100) dp[3][i%100]++; } } void read() { scanf("%d",&n); } void DP() { deal(); for(int i=4;i<=n;i++) { for(int j=10;j<100;j++)//枚举i位数字最后两位的值 for(int k=10;k<100;k++)//枚举i-1位数字最后两位的值 if(!prim[j%10+k*10]&&j/10==k%10)/**如果i位数字最后两位的值和i-1位最后一位的值构成素数,且i位数字倒数第二位数字等于i-1 位最后一位的数字**/ { dp[i][j]+=dp[i-1][k];//状态转移 dp[i][j]%=mod;//注意取余 } } long long ans=0; for(int i=0;i<100;i++) { ans+=dp [i]; ans%=mod; } printf("%lld\n",ans); } int main() { read(); DP(); return 0; }
相关文章推荐
- Ural 1586 Threeprime Numbers(DP)
- URAL 1586 Threeprime Numbers (数位DP)
- 递推DP URAL 1586 Threeprime Numbers
- ural Threeprime Numbers(dp)
- URAL 1586 Threeprime Numbers(DP)
- URAL1586——DP——Threeprime Numbers
- Ural_1586. Threeprime Numbers (DP)
- Ural 1586 Threeprime Numbers
- URAL - 1586 Threeprime Numbers
- POJ-3641 Pseudoprime numbers
- 判断素数How many prime numbers
- poj 3641 Pseudoprime numbers(快速幂)
- UESTC--1272--Final Pan's prime numbers(水题)
- 628. Maximum Product of Three Numbers
- POJ-2739-Sum of Consecutive Prime Numbers
- [leetcode]628. Maximum Product of Three Numbers
- leetcode -- 628. Maximum Product of Three Numbers
- [LeetCode]628. Maximum Product of Three Numbers
- 【CSU 1556】Pseudoprime numbers
- LeetCode - 628 - Maximum Product of Three Numbers