前九题

01:统计数字字符个数

总时间限制:

1000ms

内存限制:

65536kB

描述

输入一行字符,统计出其中数字字符的个数。

输入

一行字符串,总长度不超过255。

输出

输出为1行,输出字符串里面数字字符的个数。

样例输入

Peking University is set up at 1898.

样例输出

4

来源

习题(7-1) 医学部 2010 期末试题 樊波

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<algorithm>];int main()

{

    ;

    gets(a);

    int l=strlen(a);

    ;i<l;i++)

    {

        ')

        sum++;

    }    

    printf("%d",sum);

    ;

}

02:找第一个只出现一次的字符

总时间限制:

1000ms

内存限制:

65536kB

描述

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。

输入

一个字符串,长度小于100000。

输出

输出第一个仅出现一次的字符,若没有则输出no。

样例输入

abcabd

样例输出

c

#include<iostream>

#include<cstdio>

#include<cstring>],b[];];int main()

{

    gets(a);

    int l=strlen(a);

    ;i<l;i++)

       b[a[i]]++;

    ;i<l;i++)

           )

         {

           printf("%c",a[i]);

           ;

         }

    printf("no");

    ;

}

03:基因相关性

总时间限制:

1000ms

内存限制:

65536kB

描述

为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。

现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。

输入

有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。

输出

若两条DNA序列相关,则输出“yes”,否则输出“no”。

样例输入

0.85

ATCGCCGTAAGTAACGGTTTTAAATAGGCC

ATCGCCGGAAGTAACGGTCTTAAATAGGCC

样例输出

yes

#include<cstdio>

#include<string>

#include<iostream>using namespace std;int main()

{

    double a;

    scanf("%lf",&a);

    ,len;

    double m;

    string s1,s2;

    cin>>s1;

    cin>>s2;

    int l1=s1.length(),l2=s2.length();

    ) len=l1;

    else len=l2;

    ; i<len; i++)

    {

        if(s1[i]==s2[i])

        {

            p++;

        }

    }

    m=1.0*p/len;

    if(m>=a) cout<<"yes"<<endl;

    else cout<<"no"<<endl;

    ;

}

04:石头剪子布

总时间限制:

1000ms

内存限制:

65536kB

描述

石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。

游戏规则:石头打剪刀,布包石头,剪刀剪布。

现在,需要你写一个程序来判断石头剪子布游戏的结果。

输入

输入包括N+1行:
第一行是一个整数N,表示一共进行了N次游戏。1 <= N <= 100。
接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头、剪子或者是布):
S1 S2
字符串之间以空格隔开S1,S2只可能取值在{"Rock", "Scissors", "Paper"}(大小写敏感)中。

输出

输出包括N行,每一行对应一个胜利者(Player1或者Player2),或者游戏出现平局,则输出Tie。

样例输入

3

Rock Scissors

Paper Paper

Rock Paper

样例输出

Player1

Tie

Player2

提示

Rock是石头,Scissors是剪刀,Paper是布。混混谔谔

#include<cstdio>

#include<string>

#include<iostream>using namespace std;int main()

{

    int n;

    cin>>n;

    ],b[];

    ;i<n;i++)

     {           

         cin>>a>>b;

         ]==]==]==]==]==]=='R') cout<<"Player1"<<endl;

         else 

              ]==b[]) cout<<"Tie"<<endl;

              else cout<<"Player2"<<endl;

      }    

    ;

}

#include<stdio.h>

#include<string.h>

],b[];

int main()

{

int x,y,n;

scanf("%d",&n);

;i<n;i++)

{

scanf("%s %s",a,b);

]==]=='S') printf("Player1\n");

]==]=='P') printf("Player1\n");

]==]=='R') printf("Player1\n");

]==]=='S') printf("Player2\n");

]==]=='P') printf("Player2\n");

]==]=='R') printf("Player2\n");

]==b[]) printf("Tie\n");

}

;

}

哈希

哈希例题1

枚举循环节长度L

用哈希判断A[1…L],A[L+1…2L],A[2L+1…3L]……是否相等

最后一个循环节长度可能不足L,特殊判断

代码实现

//哈希例题1
#include <cstdio>
#include <cstring>
#define e 29LL
#define mo 1000000007
#define N 100010
//定义常量
char s[N];
long long hash[N],hs,el;
int n,i,L;
bool flg;
int main() {
    scanf();//下标是0到n-1;
    n = strlen(s+);
    ; i<=n; ++i) {
        hash[i] = (hash[i-]*e+(s[i]-))%mo;
    }
    el = ;
    ; L<=n; ++L)
    {
        el = el*e%mo;
        flg = true;
        ; i<n/L*L+; i+=L)
        {
            hs = (hash[i+L-]-hash[i-]*el%mo+mo)%mo;
            if (hs != hash[L])
            {
                flg = false;
                break;
            }
        }
        if (flg)
        {
            ; i<=n; ++i)
                if (s[i] != s[i-n/L*L])
                {
                    flg = false;
                    break;
                }
            if (flg)
            {
                printf("%d\n", L);
                break;
            }
        }
    }
}

哈希例题2

在O(n)时间内,计算出一个字符串以每个位置为中心(一个字符或者字符间隙)最长能扩展出多长的回文串

代码实现

//哈希例题2
#include <cstdio>
#include <cstring>
#define N 100011
#define e 29
#define mo 1000000007
char s[N];
long long hs1[N],hs2[N],a[N],HS1,HS2,pow[N];
int i,n,m,l,r,mid;
int main()
{
    scanf();
    n = strlen(s+);
    ; i<=n; ++i)
    {
        a[++m] = ;
        a[++m] = s[i]-;
    }
    a[++m] = ;
    ; i<=m; ++i)
        hs1[i] = (hs1[i-]*e+a[i])%mo;
    ; --i)
        hs2[i] = (hs2[i+]*e+a[i])%mo;
    pow[] = ;
    ; i<=m; ++i)
        pow[i] = pow[i-]*e%mo;

    ; i<=m; ++i)
    {
        l = ;
         < m-i) r = i-+;
        ;
        )
        {
            mid = (l+r)/;
            HS1 = (hs1[i-]-hs1[i-mid-]*pow[mid]%mo+mo)%mo;
            HS2 = (hs2[i+]-hs2[i+mid+]*pow[mid]%mo+mo)%mo;
            if (HS1 == HS2) l = mid;
            else r = mid;
        }
        printf("%d\n", l);
    }
}

05:输出亲朋字符串

编写程序,求给定字符串s的亲朋字符串s1。

亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最 后一个字符由给定字符串s的最后一个字符ASCII值加s的第一个字符的ASCII值。

输入

输入一行,一个长度大于等于2,小于等于100的字符串。字符串中每个字符的ASCII值不大于63。

输出

输出一行,为变换后的亲朋字符串。输入保证变换后的字符串只有一行。

样例输入

1234

样例输出

cege

代码实现

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
],b[];
int main()
{
gets(a);
int n=strlen(a);
;i<n-;i++)
   {
       b[i]=a[i]+a[i+];
       printf("%c",b[i]);
       //printf("%c",a[i]+a[i+1]);
   }
     b[n-]=a[n-]+a[];
 printf(]);
 //printf("%c",a[n-1]+a[0]);
;
}
/*#include<cstdio>
#include<cstring>
char a[110];
int main()
{
int n1 ,i;
gets(a);
n1=strlen(a);
for(i = 0; i < n1-1;i++)
{
printf("%c",a[i]+a[i+1]);
}
printf("%c",a[n1-1]+a[0]);
return 0;
}*/

06:合法 C 标识符

描述

给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。

C语言标识符要求:

1. 非保留字;

2. 只包含字母、数字及下划线(“_”)。

3. 不以数字开头。

输入

一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。

输出

一行,如果它是C语言的合法标识符,则输出yes,否则输出no。

样例输入

RKPEGX9R;TWyYcp

样例输出

no

代码实现

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cstring>

using namespace std;

int main()

{

];

cin>>a;

int n=strlen(a);

]>=]<=]>=]<=]=='_')

   {

     ;i<n;i++)

     {

         '&&a[i]<'A'||a[i]>'Z'&&a[i]<'_'||a[i]>'_'&&a[i]<'a'||a[i]>'z')

            {

                cout<<"no";

                ;

}

 }

   }

else

{

cout<<"no";

;

}

cout<<"yes";

;

}

07:配对碱基

脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。

输入

一个字符串,表示一条碱基链。这个字符串只含有大写字母A、T、G、C,分别表示腺瞟呤、胸腺嘧啶、鸟嘌呤和胞嘧啶。字符串长度不超过255。

输出

一个只含有大写字母A、T、G、C的字符串,为与输入的碱基链互补的碱基链。

样例输入

ATATGGATGGTGTTTGGCTCTG

样例输出

TATACCTACCACAAACCGAGAC

代码实现

#include<iostream>

#include<cstdio>

#include<cstring>

#include<cstdlib>

#include<cmath>

using namespace std;

];

int main()

{

    gets(a);

    int n=strlen(a);

    ;i<n;i++)

    {

        if(a[i]=='G')  printf("C");

        if(a[i]=='C')  printf("G");

        if(a[i]=='A')  printf("T");

        if(a[i]=='T')  printf("A");

}

;

}

08:字符替换

描述

把一个字符串中特定的字符全部用给定的字符替换,得到一个新的字符串。

输入

只有一行,由一个字符串和两个字符组成,中间用单个空格隔开。字符串是待替换的字符串,字符串长度小于等于30个字符,且不含空格等空白符;
接下来一个字符为需要被替换的特定字符;
接下来一个字符为用于替换的给定字符。

输出

一行,即替换后的字符串。

样例输入

hello-how-are-you o O

样例输出

hellO-hOw-are-yOu

代码实现

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cstring>

using namespace std;

],x,y;

int main()

{

cin>>a;

cin>>x>>y;

int n=strlen(a);

;i<n;i++)

{

if(a[i]==x)

 a[i]=y;

}

puts(a);

;

 }

09:密码翻译

描述

在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。

输入

输入一行,包含一个字符串,长度小于80个字符。

输出

输出每行字符串的加密字符串。

样例输入

Hello! How are you!

样例输出

Ifmmp! Ipx bsf zpv!

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
],x,y;
int main()
{
    gets(a);
    int n=strlen(a);
    ;i<n;i++)
    {
        if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')
        {
        if(a[i]=='z') a[i]='a';
        else
           {
            if(a[i]=='Z') a[i]='A';
            ;
           }
        }
    }
    puts(a);
    ;
 } 

noi题库 1.7 字符串的更多相关文章

  1. noi 题库1.7字符串 第16至20题

    16:忽略大小写的字符串比较 一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止.如果全部字符 ...

  2. noi题库 1.7 字符串 10到第15题

    10:简单密码 描述 Julius Caesar曾经使用过一种很简单的密码.对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文.比如字符A用F来代替.如下是密文和明文中字符 ...

  3. NOI题库 09:图像旋转翻转变换

    NOI题库开始的题,也是略水,当然也是大水,所以彼此彼此 09:图像旋转翻转变换 总时间限制: 1000ms 内存限制: 65536kB 描述 给定m行n列的图像各像素点灰度值,对其依次进行一系列操作 ...

  4. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  5. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

  6. NOI题库-小学奥赛QwQ

    今天Loli教育我们让我们来看看NOI题库的奥赛部分,不过,为何是小学的( ⊙ o ⊙ )啊!感觉智商被各种侮辱. 余数相同问题: 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为 ...

  7. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T31——T35

    T31 字符串P型编码 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串122344111可被描述为"1个1.2个 ...

  8. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

    T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替 ...

  9. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T11——T20

    T11 图像旋转 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数.1 <= n <= 100,1 <= ...

随机推荐

  1. [CF912A]Tricky Alchemy

    题意:你有a个黄水晶和b个蓝水晶,要求要x个黄水晶球(2黄),y个绿水晶球(1黄1蓝),z个蓝水晶球(3蓝),问还要多少水晶题解:模拟 C++ Code: #include<cstdio> ...

  2. 斜率dp+cdq分治

    写在前面 这个东西应该是一个非常重要的套路......所以我觉得必须写点什么记录一下,免得自己忘掉了 一直以来我的斜率dp都掌握的不算很好......也很少主动地在比赛里想到 写这个的契机是noi.a ...

  3. [NOI2002] 银河英雄传说 (带权并查集)

    题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶 ...

  4. Codeforces Round #535 (Div. 3) 题解

    Codeforces Round #535 (Div. 3) 题目总链接:https://codeforces.com/contest/1108 太懒了啊~好久之前的我现在才更新,赶紧补上吧,不能漏掉 ...

  5. Fragmenttabhost的使用教程

    1.准备tab的图标,放到mipmap目录下面,大小64x64,准备2种,一种是选中的,一种是未选中的,如下图 2.重写fragmentabhost,防止调用fragment每次点击tab都要重新调用 ...

  6. Watto and Mechanism Codeforces Round #291 (Div. 2)

    C. Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  7. idea设置文件的编码格式

    在打开某些类时会发现注释是乱码的,该如何解决idea的文件乱码呢?这就需要设置这个文件的合适编码格式: idea设置文件编码的两种方式分别如下: 第一种方式点击idea的右下角的图标如下图所示: 第二 ...

  8. com.mongodb.MongoException$CursorNotFound: cursor not found on server异常处理

    java链接MongoDB处理大量数据时经常碰到cursor not found 的异常,其实是超时所致 Exception in thread "main" com.mongod ...

  9. 根据select创建input并赋值

    <!DOCTYPE html><html> <head>        <meta charset="UTF-8">         ...

  10. es6+最佳入门实践(10)

    10.Generator 10.1.Generator是什么? Generator函数是ES6提供的一种异步编程解决方案.在它的内部封装了多个状态,因此,又可以理解为一种状态机,执行Generator ...