C++题解 不明飞行物(ufo)

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;//程序结束
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值