P1200题解
查看原帖
P1200题解
1191134
dsbwzb楼主2024/9/1 15:51

P1200 Your Ride is Here!

本题目主要意思就是匹配字符串,但是方式有那么一点点特别。

首先请看每一个字母,由于全部是大写,所以不用考虑转换;但是他的计算方式不是ASCLL码,而是这个字母在字母表上面的位置。

比如说‘A'在字母表上是第一个,所以代表的数字是1, "B"是第二个,所以表示2......

知道这一点很容易,但是要怎么表示呢?

这就要涉及ASCLL码了。

已知A的ASCLL码是65,而它的对应的数字是1.

所以自然而然的,对于每一个字母α,它的数值就是其ASCLL值-64!!

最重要的一点出来后,其他的就好办多了。

我们可以先后遍历两个字符串l,l1分别把他们的最终结果算出来,也就是数值之乘积mod47再进行比较。 最终看一看哪些人会被外星人接走拿去做研究...

至于mod,就是指a/b的余数c。应该都理解吧awa...

好的,废话不多说,直接上AC代码!

#include<bits/stdc++.h>//万能头文件,迎接新时代
using namespace std;
string s;
string s1;//两个字符串,对比组
long long sum=1;
long long sum1=1;//对比组的结果记录,也就是乘积,一定要设初始值为1!!不然结果是0..
int main(){
	cin>>s;
	cin>>s1;
	int l=s.size();
	int l1=s1.size();//求长度
	for(int i=0;i<l;i++){//遍历
		s[i]-=64;
		sum*=int(s[i]);//转化为"int"类型乘进结果
	}
	for(int i=0;i<l1;i++){
		s1[i]-=64;
		sum1*=int(s1[i]);//跟上一组一样
	}
	if(sum%47==sum1%47){
		cout<<"GO";//判断
	}
	else{
		cout<<"STAY";
	}
	return 0;//看到这里,你已经AC了
}

本人的第一篇题解,点赞支持一下qwq

2024/9/1 15:51
加载中...