zoukankan      html  css  js  c++  java
  • 1473B. String LCM

    题意:1)ax的含义是一个字符串a,重复x次形成的字符串。如, "abc"   2 = "abcabc"。2)如果存在一个数x,使bx=a,那么就称字符串a能被字符串b整除。3)把最短的能同时被字符串s和t整除的非空字符串称为LCM(s,t)。输入两个字符串,找出他们的LCM字符串并输出,否则输出“-1”。

    题解:问题分为两部分。1)判断两个数组是否有LCM字符串。2)如果存在,如何输出LCM字符串。第一个问题,只要保证字符串在对应的位置是相同字母即可。第二个问题,通过找到字符串长的最小公倍数,循环输出,就得到答案了。

    ACcode:

    ll gcd(ll a, ll b)
    {
    return b ? gcd(b, a % b) : a;//最大公因数求法
    }
    ll lcm(ll a, ll b)
    {
    return a * b / gcd(a, b);//最小公倍数求法
    }
    int main()
    {
    int t;
    cin>>t;
    while (t--)
    {
    string a, b;
    int flag = 0;
    cin >> a >> b;
    ll x = a.size();
    ll y = b.size();
    ll Lcm = lcm(x, y);
    for (ll i = 0; i < Lcm; i++)
    if (a[i % x] != b[i % y])
    {
    flag = 1;
    break;
    }判断两个字符串是否存在LCM字符串
    if (flag == 1)
    cout << "-1" << endl;
    else
    {
    for (ll i = 0; i < Lcm; i++)
    {
    cout << a[i % x];//通过最小公倍数输出
    }
    cout << endl;
    }
    }
    return 0;
    }

  • 相关阅读:
    django之admin管理工具
    django之中间件
    cookie和session
    day052-53 django框架
    day050 前端Jquery库的使用
    sprint
    Scrum 项目1.0
    【团队项目】3.0
    [读书笔记]
    【团队项目】2.0
  • 原文地址:https://www.cnblogs.com/Uiney117/p/14356533.html
Copyright © 2011-2022 走看看