zoukankan      html  css  js  c++  java
  • USACOTrainning.Prime Palindromes

    题目大意是给两个整数a,b,然后求出这之间的所有回文素数。

    枚举回文的数,其实枚举回文的数加上判断宿舍的时间不是很长的。

    1 #include <iostream>
    2 #include <string>
    3 #include <algorithm>
    4 #include <string.h>
    5 #include <vector>
    6 #include <math.h>
    7 #include <time.h>
    8 #include <queue>
    9 #include <set>
    10  using namespace std;
    11
    12 vector<int>ans;
    13
    14  int num[8];
    15
    16 bool check(int val)
    17 {
    18 for(int i = 2; i <= sqrt(val * 1.0); i++)
    19 {
    20 if(val % i == 0) return false;
    21 }
    22 return true;
    23 }
    24
    25 void dfs(int i, int len)
    26 {
    27 if(i == len)
    28 {
    29 int val = 0;
    30 for(int j = 0; j < 2 * len; j++)
    31 {
    32 if(j < len) val = val * 10 + num[j];
    33 else val = val * 10 + num[2 * len - 1 - j];
    34 }
    35 if(check(val)) ans.push_back(val);
    36 return;
    37 }
    38
    39 if(i == 0)
    40 {
    41 for(int j = 1; j <= 9; j += 2)
    42 {
    43 //if(j == 5) continue;
    44 num[i] = j;
    45 dfs(i + 1, len);
    46 }
    47 }
    48 else
    49 {
    50 for(int j = 0; j <= 9; j++)
    51 {
    52 num[i] = j;
    53 dfs(i + 1, len);
    54 }
    55 }
    56 }
    57
    58 void ddfs(int i, int len)
    59 {
    60 if(i == len)
    61 {
    62 int val = 0;
    63 for(int j = 0; j < 2 * len - 1; j++)
    64 {
    65 if(j < len) val = val * 10 + num[j];
    66 else val = val * 10 + num[2 * len - 2 - j];
    67 }
    68 if(check(val)) ans.push_back(val);
    69 return;
    70 }
    71
    72 if(i == 0)
    73 {
    74 for(int j = 1; j <= 9; j += 2)
    75 {
    76 //if(j == 5) continue;
    77 num[i] = j;
    78 ddfs(i + 1, len);
    79 }
    80 }
    81 else
    82 {
    83 for(int j = 0; j <= 9; j++)
    84 {
    85 num[i] = j;
    86 ddfs(i + 1, len);
    87 }
    88 }
    89 }
    90
    91 void ready()
    92 {
    93 for(int i = 1; i <= 8; i++)
    94 {
    95 if(i % 2 == 0) dfs(0, i / 2);
    96 else ddfs(0, i / 2 + 1);
    97 }
    98 }
    99
    100 int main()
    101 {
    102 freopen("pprime.in", "r", stdin);
    103 freopen("pprime.out", "w", stdout);
    104
    105 ready();
    106 sort(ans.begin(), ans.end());
    107 int a, b, res = 0;
    108 scanf("%d%d", &a, &b);
    109 for(int i = 0; i < ans.size(); i++)
    110 {
    111 if(ans[i] >= a && ans[i] <= b) printf("%d\n", ans[i]);
    112 }
    113 }
  • 相关阅读:
    ecplise中修改reviewboard密码
    本地上jar命令
    Python面试必须要看的15个问题
    Maven命令行窗口指定settings.xml
    codevs1002搭桥(建图+Prim)
    codevs1099字串变换(Bfs)
    codevs1044四子连棋(Dfs)
    codevs1226倒水问题(Bfs)
    codevs1051单词接龙(栈)
    niop 2014寻找道路
  • 原文地址:https://www.cnblogs.com/litstrong/p/1711356.html
Copyright © 2011-2022 走看看