zoukankan      html  css  js  c++  java
  • SDUT 2463 学密码学一定得学程序

     

    学密码学一定得学程序

    Time Limit: 1000 ms Memory Limit: 65536 KiB

    Problem Description

    曾经,ZYJ同学非常喜欢密码学。有一天,他发现了一个很长很长的字符串S1。他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2。但是很不幸的是,WL忘记跟他说是什么意思了。这个时候,ZYJ不得不求助与伟大的ZP。ZP笑了笑说,这个很神奇的,WL的意思是只要你找到她给你的字符串在那个神奇的字符串的位置,你就会有神奇的发现。ZYJ恍然大悟,原来如此,但是悲剧来了,他竟然不知道怎么找。。。。是的,很囧是不是。所以这时候就需要化身为超级玛丽亚的你现身了,告诉他吧。。。。。。

    Input

     

    首先输入一个n。表示有n组测试数据。

    每组测试数据有两行。

    第一行为字符串S1,长度不大于1000000。

    第二行为字符串S2,长度不大于10000,并且长度不小于2。

    Output

     

    输出S2在S1的位置。如果有多个位置,只输出第一个位置。

    如果找不到,就输出“::>_<::“(不输出双引号)。

    Sample Input

    1
    ASDFGDF
    DF
    

    Sample Output

    3

    提示:此题看题意是让我们来找模式串在主串中的位置,所以我们可以两种方法:一种KMP,一种strstr,所以主要是KMP能弄明白,模板题,给的数据也很水。

    代码实现如下(g++):
    #include <stdio.h>
    #include <iostream>
    #include <string.h>
    #include <stdlib.h>
    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    
    char a[1000010];
    char b[10010];
    int main()
    {
        int n;
        scanf("%d",&n);
        getchar();
        while(n--)
        {
            gets(a);
            gets(b);
            char *ch=strstr(a,b);
            if(ch==NULL)
                cout<<"::>_<::"<<endl;
            else
            {
                int t=ch-a+1;
                cout<<t<<endl;
            }
        }
        return 0;
    }
    
    
    /***************************************************
    Result: Accepted
    Take time: 16ms
    Take Memory: 1176KB
    ****************************************************/
  • 相关阅读:
    C#操作Word (2)-- 打开&关闭Word文档
    JS input 银行卡号格式转换
    解决H5在微信浏览器或QQ浏览器修改title的问题
    CSS
    Atom 编辑器使用和学习
    php的一个小坑,输出不了json_encode
    js 组合键监听ctrl + enter
    webpack3.0 环境搭建
    css 使表格随着内容自动适应宽度
    获取input光标的x和y轴
  • 原文地址:https://www.cnblogs.com/jkxsz2333/p/9498409.html
Copyright © 2011-2022 走看看