信息学奥赛一本通:2050:【例5.20】字串包含

news/2024/12/12 3:36:16/

2050:【例5.20】字串包含


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 15692     通过数: 6514 

【题目描述】

字符串移位包含问题。

对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。

给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCDACBD则不能通过多次移位来得到其中一个字符串是新串的子串。

【输入】

一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30

【输出】

如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false

【输入样例】

AABCD CDAA

【输出样例】

true
#include<iostream>
#include<cmath> 
#include<cstring>
char a[105],b[105]; 
using namespace std;
int main()
{
int m,n,i,j,k,t;
int bizhi=0,m1,n1;
char c;
char x[105],y[105];
scanf("%s",a);
scanf("%s",b);
m=strlen(a);//输入之后,弄出长短
n=strlen(b);
if(m<n)
{strcpy(x,b);strcpy(y,a);
}
else
{strcpy(x,a);strcpy(y,b);
}
m1=m>n?m:n;//长的在a中,m1是它的长度。
n1=m<n?m:n;//n1是短的那个
for( i=0;i<m1;i++){//长的字串,要循环移位m1次for(j=0;j<n1;j++)//从x的第一位和y的第一位开始判断,如果不同就跳出if(x[j]!=y[j])break;if(j==n1){//比较之后,如果到了y的末尾,都相同,就是标志位为1bizhi=1;}c=x[0];//不管相同不同,都把第一位移动到最后一位,再判断,有点浪费时间哈……,应在上面的标志位上加个break就好了for(int tt=0;tt<m1-1;tt++)//移动字串向前,第一位放在最后{x[tt]=x[tt+1];}x[m1-1]=c;//做完上面移位,再到最上面判断和循环}
if(bizhi==0)
printf("false");
else
printf("true");
return 0;
}


http://www.ppmy.cn/news/883518.html

相关文章

数字反转(信息学奥赛一本通-T1089)

【题目描述】 给定一个整数&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零&#xff0c;例如输入-380&#xff0c;反转后得到的新数为-83。 【输入】 输…

信息学奥赛一本通 2024:【例4.10】末两位数

【题目链接】 ybt 2024&#xff1a;【例4.10】末两位数 【题目考点】 1. 同余定理 根据同余定理&#xff0c;有&#xff1a; ( a ∗ b ) % m ( a % m ∗ b % m ) % m (a*b)\%m (a\%m * b\%m)\%m (a∗b)%m(a%m∗b%m)%m 2. 幂取模 a b % m ( a b − 1 ⋅ a ) % m ( a b…

信息学奥赛一本通(2024:【例4.10】末两位数)

2024&#xff1a;【例4.10】末两位数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1078 通过数: 584 【题目描述】 求nn个19921992的乘积的末两位数是多少&#xff1f; 【输入】 输入nn。 【输出】 如题述的末两位数。 【输入样例】 3 【输出样例】 88 【提…

信息学奥赛一本通:1089:数字反转

【题目描述】 给定一个整数&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零&#xff0c;例如输入−380&#xff0c;反转后得到的新数为−83。 【输入】 …

信息学奥赛一本通——解题目录

慢慢更新中 【声明】讲解全是我自己的博客 【第一章 C语言入门】 1000&#xff1a;入门测试题目 信息学奥赛一本通——1000&#xff1a;入门测试题目_c小蒟蒻的博客-CSDN博客 2060&#xff1a;【例1.1】计算机输出 信息学奥赛一本通——2060&#xff1a;【例1.1】计…

北语、北外2022年12月公派英语统考的通知

近日&#xff0c;北语和北外均发布了12月29日国家公派英语高级班结业统考的通知。与以往不同的是&#xff1a;为无法参加12月29日统考的学员增加一次考试机会&#xff0c;时间定于2023年2月25日&#xff0c;但需要提前报名。具体报名时间及方式参见两校的通知&#xff0c;知识人…

信息学奥赛一本通:2024:【例4.10】末两位数

2024&#xff1a;【例4.10】末两位数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 20235 通过数: 11679 【题目描述】 求n个1992的乘积的末两位数是多少&#xff1f; 【输入】 输入n。 【输出】 如题述的末两位数。 【输入样例】 3 【输出样例】 88 【提示】 …

人大、北外、北航三校开启在职硕士(学位)商业数据分析方向 | 报名

2019年&#xff0c;我们再次携手世界一流学科名校中国人民大学&#xff0c;同时新增“985/211”高校-北京航空航天大学、北京外国语大学&#xff0c;继续为大家带来技能与学位双提升的在职研究生项目。大数据、人工智能、商业数据分析等多个互联网方向可供选择。 在校期间&…