ICPC--1163:亲和串(字符串)&1164:字符串加密
ICPC--1163: 亲和串(字符串)题目描述判断亲和串 。 亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位 , 使s2包含在s1中 , 那么我们就说s2 是s1的亲和串 。
输入本题有多组测试数据 , 每组数据的第一行包含输入字符串s1,第二行包含输入字符串s2 , s1与s2的长度均小于100000 。
输出如果s2是s1的亲和串 , 则输出"yes" , 反之 , 输出"no" 。 每组测试的输出占一行 。
样例输入AABCDCDAAASDASDFababa
样例输出yesnono
代码#include#include int main(){char s1[200001], s2[100001], s3[100001];int i, len1, len2;while (scanf_s("%s%s", s1, 20001, s2, 10001) != EOF){len1 = strlen(s1);len2 = strlen(s2);if (len1 < len2)printf("no\n");else{strcpy(s3, s1);strcat(s1, s3);if (strstr(s1, s2) != NULL)printf("yes\n");elseprintf("no\n");}}return 0;}
ICPC--1164: 字符串加密题目描述【ICPC--1163:亲和串(字符串)&1164:字符串加密】输入一串字符(长度不超过100)和一个正整数k , 将其中的英文字母加密并输出加密后的字符串 , 非英文字母不变 。 加密思想:将每个字母c加一个序数k , 即用它后面的第k个字母代替 , 变换公式:c=c+k 。 如果字母为z , 则后一个字母是a , 也就是字母字符形成一个圆 。
输入输入第一行是若干字符 , 以回车结束 。 输入第二行是一个整数k , k是int范围内的正整数;
输出输出加密后的字符串 。
样例输入12kjsdZjk280
样例输出12edmxTde
提示注意 , 即使通过模运算把k控制在小于26的范围内 , 依然要考虑char类型溢出的问题 , 如'z' + 10也会超出char的表示范围 。 但庆幸的是 , 我们只需要考虑向内存存储时的char类型溢出 , 而在计算过程中不会溢出 , 因为计算过程中char会被提升为int类型 。
代码#includeint main(){char a[105];int i,k;gets(a);scanf_s("%d",for(i=0;a[i]!='\0';i++){if(a[i]>='a'else if(a[i]>='A'elseprintf("%c",a[i]);}printf("\n");return 0;}