zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 102 (Rated for Div. 2)B. String LCM

    B. String LCM

    题目分析

    题意:比较两组字符串之间是否存在”“字符串最小公倍数”“, 如果存在就输出”“字符串最小公倍数”“, 不存在则输出-1

    所谓“字符串最小公倍数”,这里举几个例子来理解一下定义:

    • ababaababab有“字符串最小公倍数”abababababab

    • aaaaaaa有“字符串最小公倍数”aaaaaaaaaaaa

    • ababaaba没有“字符串最小公倍数”

    • ababaab没有“字符串最小公倍数”

    所以,我们可以先按照“字符串最小公倍数”的长度,用他们自身来各自构造两个字符串的相等,如果构造的字符串相等,那么构造出来的两个字符串就是他们的“字符串最小公倍数”,如果不相等则就直接输出-1。

    AC代码

    #include<bits/stdc++.h>
    using namespace std;
    #define gcd(a, b) __gcd(a, b)
    
    int t;
    int main(){
        ios::sync_with_stdio(false), cin.tie(0);
        cin >> t;
        while(t--){
            string s, ss;
            string str1 = "", str2 = "";
            cin >> s >> ss;
            int len1 = s.length(), len2 = ss.length();
            int len = len1 * len2 / gcd(len1, len2); // 求长度的最小公倍数,最小公倍数和最大公因数的关系是很基础的数论知识
            for(int i = 0; i < len / len1 ; i++) str1 += s;
            for(int i = 0; i < len / len2 ; i++) str2 += ss;
            if(str1 == str2) cout << str1 << endl;
            else cout << "-1" << endl;
        }
     
        return 0;
    }
    
  • 相关阅读:
    初入水:vector
    Sort Colors
    Palindrome Partitioning II
    Search for a Range
    Container With Most Water
    Palindrome Partitioning
    Longest Consecutive Sequence
    简单写了一个堆排序
    Best Time to Buy and Sell Stock III
    4-7
  • 原文地址:https://www.cnblogs.com/FrankOu/p/14280212.html
Copyright © 2011-2022 走看看