C++题解 P2053 2.不明飞行物(ufo)(就讲坑!!!)(包你满意)
原题: 2053.2.不明飞行物(ufo)2023zjhs020 于2025-03-08
本体考察考生的基本字符串运用和基础运算(一级),难度不高。
与之相关的题:洛谷P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here
讲一讲思路:
这其实是一道去高精度的题,不然就要使用高精度。
首先,我们输入两个字符串,代表彗星和组名。
之后循环求总和。
注意:
在这里有个坑,就是每加上一个数(每循环一次)就要取余一次47,
如果只在最后取余,只能拿17分。
最重要的都讲了,下面看代码。
#include<bits/stdc++.h>//头文件
using namespace std;
string s,x;//定义
long long sum1=1,sum2=1;
int main()
{
cin>>s>>x; //输入
long long len1=s.size();//求长度
long long len2=x.size();//求长度
for(int i=0;i<len1;i++)//循环彗星
{
long long l=int(s[i])-'A'+1;//求编号
sum1*=l;//相乘
sum1%=47;//每一次都要取余
}
for(int i=0;i<len2;i++)//循环组名
{
long long l=int(x[i])-'A'+1;//求编号
sum2*=l;//相乘
sum2%=47;//取余
}
sum1%=47;//最后再取余
sum2%=47;
if(sum1==sum2)//如果相同
{
cout<<"GO"<<endl;//输出“GO”;
cout<<"r1=r2="<<sum1;
}
else{//不同
cout<<"STAY"<<endl;//输出“STAY”;
cout<<"r1="<<sum1<<" "<<"r2="<<sum2<<endl;
}
return 0;//程序结束
}