1 条题解
-
0
【深基6.习6】[USACO1.1] 你的飞碟在这儿 Your Ride Is Here
解题思路
把每个大写字母换成 1~26,累乘时每步模 47。比较两个名字最终余数,相等输出 GO,否则 STAY。
正确性说明
模乘法满足先取模再相乘不影响最终余数,故滚动余数等于完整乘积模 47;比较恰好实现匹配条件。
易错点
乘积初始是 1,不能是 0;字母 A 对应 1。
复杂度
总字符长 L,时间 O(L),空间 O(L)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string a, b; cin >> a >> b; int x = 1, y = 1; for (char c : a) x = x * (c - 'A' + 1) % 47; for (char c : b) y = y * (c - 'A' + 1) % 47; cout << (x == y ? "GO" : "STAY") << "\n"; return 0; }
- 1