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;
    }

  • 相关阅读:
    二级联动选择框的实现
    vimperator
    Ipan笔记-2
    git的一些补充点
    联想云部署的笔记心得
    关于vim的折叠
    ipan笔记
    php中浮点数计算问题
    Chrome 控制台报错Unchecked runtime.lastError: The message port closed before a response was received
    PHP-redis中文文档
  • 原文地址:https://www.cnblogs.com/Uiney117/p/14356533.html
Copyright © 2011-2022 走看看