顾冬晴_2404020118_网络24_1 level
获赞
0
粉丝
0
关注
1
看过 TA
13
哈尔滨理工大学
2024
golang
IP属地:黑龙江
暂未填写个人简介
私信
关注
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
#include #include using namespace std;// 比较两个大数字符串 a 和 b,返回 true 如果 a >= b,否则 falsebool isGreaterOrEqual(const string &a, const string &b) {    if (a.length() > b.length()) return true;    if (a.length() < b.length()) return false;    return a >= b;}// 大数减法,假设 a >= b,将字符串 a 减去 b,返回结果string subtractStrings(string a, const string &b) {    int carry = 0;    for (int i = 0; i < b.length(); i++) {        int ai = a[a.length() - 1 - i] - '0';        int bi = b[b.length() - 1 - i] - '0';        int diff = ai - bi - carry;        if (diff < 0) {            diff += 10;            carry = 1;        } else {            carry = 0;        }        a[a.length() - 1 - i] = diff + '0';    }    for (int i = b.length(); i < a.length(); i++) {        int ai = a[a.length() - 1 - i] - '0';        if (ai == 0 && carry == 1) {            a[a.length() - 1 - i] = '9';        } else {            a[a.length() - 1 - i] = (ai - carry) + '0';            carry = 0;        }    }    // 去除前导零    while (a.length() > 1 && a[0] == '0') {        a.erase(a.begin());    }    return a;}// 大数取模函数:将大数字符串 a 对大数字符串 b 取模string modStrings(string a, const string &b) {    while (isGreaterOrEqual(a, b)) {        a = subtractStrings(a, b);    }    return a;}// 大数 GCD 函数,使用字符串实现的欧几里得算法string gcdLarge(string a, string b) {    while (b != "0") {        string temp = modStrings(a, b);        a = b;        b = temp;    }    return a;}int main() {    string a, b;    cin >> a >> b;    cout << gcdLarge(a, b) << endl;  // 输出大数 GCD    return 0;}
0 点赞 评论 收藏
分享
#include #include #include using namespace std; // 优化后的判断字符串是否为回文串函数bool isPalindrome(const string& s) {    int len = s.length();    for (int i = 0; i < len / 2; i++) {        if (s[i]!= s[len - 1 - i]) {            return false;        }    }    return true;} int main() {    int n;    cin >> n;    string s;    for (int i = 0; i < n; i++) {        cin >> s;        int len = s.length();        bool found = false;             for (int subLen = 2; subLen < len; subLen++) {                         if (subLen >= 2 && isPalindrome(s.substr(0, subLen))) {                                 if (isPalindrome(s.substr(subLen)) && len - subLen >= 2) {                    found = true;                    break;                }            }        }        if (found) {            cout << "Yes" << endl;        } else {            cout << "No" << endl;        }    }    return 0;}
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务