• Vijos 捕风捉影


    背景

    《风云》里有详细记载,自己去看吧^_^...

    描述

    有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀。风:你给我闭嘴。)捕风捉影的关键是换气(换不好就会大喘气...)。

    使用捕风捉影这一招时并不是每一步都喘气,而是在特定的步数喘气。一般来说功力越高,喘气越稀疏。喘气的步数符合特定规律:第一要是SUSHU(弟子二:哇塞!堂主,你还会鸟语,我好好崇拜你呦!可是SUSHU是什么意思呢?风:笨蛋,那是汉语拼音!)第二要是一个回文数,回文数就是正反念一样的数,如:123321,121,5211314(弟子三:堂主,最后一个好象不是...风:废话,当然不是了,我是考察一下你们的纠错能力!)现在给出两个数M,N(5<=M<N<=100,000,000),你要算出M,N之间需要换气的都有哪几步。(包括M,N)。算出来的可以提升为本堂一级弟子,月薪(1000000000000000000000000000000000000000000 MOD 10 )元。

    格式

    输入格式

    两个整数M,N。用空格隔开。

    输出格式

    在M,N之间的换气点,每个一行。

    样例1

    样例输入1

    100 500
    

    样例输出1

    101
    131
    151
    181
    191
    313
    353
    373
    383
    

    来源

    来自天下会神风堂主

     1 /*
     2     乍一看数据范围很大
     3     其实只需要注意两点就行了
     4     这个回文素数必定是2n-1位 2n位回文数必定被11整除
     5     回文数第一位只能是1 3 7 9
     6     把回文数表打出来在判断就好了 
     7 */
     8 #include<cmath>
     9 #include<cstdio>
    10 #include<iostream>
    11 #include<algorithm>
    12 #define MAXN 1010
    13 
    14 using namespace std;
    15 
    16 int n,m,cnt;
    17 int a[MAXN];
    18 
    19 inline void read(int&x) {
    20     x=0;int f=1;char c=getchar();
    21     while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
    22     while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-48;c=getchar();}
    23     x=x*f;
    24 }
    25 
    26 inline bool pd(int x) {
    27     for(int i=2;i<=sqrt(x);i++)
    28       if(x%i==0) return false;
    29     return true;
    30 }
    31 
    32 inline void sushu() {
    33     for(int i=1;i<=9;i+=2) {
    34         if(pd(i*10+i)) a[++cnt]=i*10+i;
    35           if(i!=5)
    36         for(int j=0;j<=9;j++) {
    37             if(pd(i*100+j*10+i)) a[++cnt]=i*100+j*10+i;
    38             for(int k=0;k<=9;k++) {
    39                 if(pd(i*10000+j*1000+k*100+j*10+i)) a[++cnt]=i*10000+j*1000+k*100+j*10+i;
    40                 for(int l=0;l<=9;l++) {
    41                     if(pd(i*1000000+j*100000+k*10000+l*1000+k*100+j*10+i))
    42                       a[++cnt]=i*1000000+j*100000+k*10000+l*1000+k*100+j*10+i;
    43                 }
    44             }
    45         }
    46       }
    47 }
    48 
    49 int main() {
    50     read(n);read(m);
    51     a[++cnt]=5;a[++cnt]=7;
    52     sushu();
    53     sort(a+1,a+1+cnt);
    54     for(int i=1;i<=cnt;i++) 
    55       if(a[i]>=n&&a[i]<=m)
    56         printf("%d
    ",a[i]);
    57     //printf("%d
    ",cnt);
    58     return 0;
    59 }
    代码


    作者:乌鸦坐飞机
    出处:http://www.cnblogs.com/whistle13326/
    新的风暴已经出现 怎么能够停止不前 穿越时空 竭尽全力 我会来到你身边 微笑面对危险 梦想成真不会遥远 鼓起勇气 坚定向前 奇迹一定会出现

     
  • 相关阅读:
    [转] 数学原理浅谈一下《黑客帝国》
    [转] 应聘Java笔试时可能出现问题及其答案(第八部分)
    经典排序之堆排序
    求全排列算法简单的实现
    求一个整数因式分解
    adk环境变量配置
    经典排序之希尔排序
    快速求幂算法
    判断一个数字是否为素数的基于C语言的算法
    高次幂求模
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7045129.html
Copyright © 2020-2023  润新知