编程训练:潜伏(9528)

news/2024/8/27 10:59:52

题目:记录长度为N(1 <= N <= 100000),全部由数字构成,需要多次查询在该记录的第i位后出现的第一个两位素数。
 

输入

第一行,一个全部由数字构成的字符串,长度小于100000。 
第二行,一个整数M(1 <= M <= 100000),表示OYY查询的次数。
第3 … M+2行,每行一个数字Pi(Pi保证不会超过给出字符串的长度且大于零),请求出Pi后一个出现的两位素数。

输出

每个询问一行,输出题目要求的素数,如果不存在输出“-1”。

输入样例

123185154231234984181212132123
6
3
5
8
13
21
30

输出样例

31
23
23
23
13
-1
个人代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s[100005];
int IsSushu(int sum){//判断是否为素数
    int i;
for(i=2;i<sum/2;i++){
if(sum%i==0)
return 0;
}
return 1;
}
int two(int m)//判断是否为两位数
{
    if(m>=10) return 1;
    else return 0;
}
int main()
{

    int i=0,n,recode,j,sum,flag,code,k;
    int sss[100005];
    memset(sss,-1,sizeof(sss));
    while((s[i]=getchar())!='\n'){
    i++;
    }
    s[i]='\0';
    for(j=0;j<i;j++){
    sum=(s[j]-'0')*10+(s[j+1]-'0');
    if(IsSushu(sum)==1&&two(sum)==1){
    sss[j]=sum;
    for(k=j-1;k>=code;k--)//填充前面没有素数的记录
    if(sss[k]==-1)
    sss[k]=sss[j];
    code=j;//记录上一次填充到的位置,有利于减少次数,也通过判断不等于-1时直接跳出填充的循环
    }
    }
    scanf("%d",&n);
    while(n--){
    scanf("%d",&recode);
    printf("%d\n",sss[recode-1]);

    }

    return 0;
}
思路:主要思路在于对一个字符串,每次都会寻找相同的东西,字符串太长时,如果每次都去遍历查找,会导致算法复杂度为O(n²);于是可以直接遍历这个字符串,一次性把每个位置对应的素数记录保存下来,节省每次都去遍历花费的时间。

http://www.niftyadmin.cn/n/2556761.html

相关文章

android ListView实现圆角

首先呢&#xff0c;我们还是看几个示图&#xff1a;&#xff08;这是360推出的一款天气预报APP(墨迹)&#xff0c;很不错的一款哦&#xff0c;这里为她们做一个免费广告&#xff0c;哈哈.&#xff09; 这种带有圆角的listview 看起来很棒吧&#xff0c;确实是这样&#xff0c;其…

现代dump技术及保护措施

现代dump技术及保护措施[Ms-Rem]&#xff08;上&#xff09;现代dump技术及保护措施本文目的我们都喜欢使用免费的软件&#xff0c;这也就意味着需要有人对它们进行破解。而破解的时候就要对付各种各样的壳和protectors。壳的工作原理和脱壳的基本方法在《Packer终结篇》&#…

asp.net获取网站绝对路径

网站在服务器磁盘上的物理路径: HttpRuntime.AppDomainAppPath虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath任何于Request/HttpContext.Current等相关的方法, 都只能在有请求上下文或者页面时使用. 即在无请求上下文时,HttpContext.Current为null. 而上面提到的方法一直…

注释PEMaker6源代码(一)

这两天看了精华8的“向导入表中注入代码“这篇文章&#xff0c;对阅读PEMaker6源代码进行了部分注释&#xff0c;要不总是忘了哪一部分是什么功能&#xff0c;为了增加点发帖量&#xff0c;将注释过的几个类逐一整理后发布&#xff0c;老鸟就无需看了,也是为了自己加强学习。 这…

MBR和DBR详细分析

系统2K PRO SP4,C盘采用NTFS,用WinHex提取MBR和DBR,拿IDA分析的.关键在DBR几处不明白. 1.一点预备知识:主引导扇区代码&#xff08;MBR&#xff09;代码:;; ; MBR( Master Boot Record )主引导记录包含两部分的内容&#xff0c;前446字节为启动代码及数据&#xff0c;而; 从446…

坑爹的高德地图API

症状 ld: -[MASearch poiSearchWithOption:] in *****/Release-iphonesimulator/libMASearchKit.a(MASearch.o) contains undefined reference for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 同样的错误已经有人反映…

使用Ueditor1.4版本需要注意的点

1.引用配置文件时&#xff0c;ueditor.all.min.js一定要放在config.js文件之前&#xff1b; 2.图片上传功能需要修改config.json文件中的图片路径保存前缀和自定保存路径&#xff0c;前缀从根目录写起&#xff0c;前缀和自定义保存路径拼起来刚好是一条完整的路径。

注释PEMaker6源代码(三)

今天大概看了一下精华8《向PE中注入代码》的译文&#xff0c;之前没有仔细看过&#xff0c;因为发现看过之后对源代码还是不是很明白&#xff0c;所以就没有参照这篇译文进行注释&#xff0c;大多都是自己理解网上搜索&#xff0c;今天发现很多地方有失误。大框的地方一定要参照…