字符串的最小公倍数

SpringBoot实战——仿b站项目(一) 热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。 阅读详情

思路1:

很明显,两个串的最小循环节要是一样的才行。然后取两个串中循环节的重复次数的lcm,将这个循环节重复lcm次,便是答案

AC代码:

import javax.swing.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.nio.file.attribute.AclEntryFlag;
import java.security.AlgorithmConstraints;
import java.sql.Struct;
import java.text.CollationElementIterator;
import java.text.DateFormatSymbols;
import java.util.*;
import java.util.stream.Collectors;


public class Main
{
    static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    static int N = (int)1e5;
    static math_myself math_me = new math_myself();
    static List<Integer> list = new ArrayList<>();
    static Map<String, Integer> map = new HashMap<>();

    // 检查字符串s循环的长度是否为k
    // abababab,最小循环节是ab,长度是2
    static boolean check_mcs(char s[],int k)
    {
        if(s.length % k != 0)  return false; // 防止aba情况
        for(int i = 0 ; i < s.length ; i ++)  if(s[i] != s[i % k])  return false;
        return true;
    }

    static boolean check_issame_mcs(char s1[], int x, char s2[], int y)
    {
        // 长度不同,最小循环节肯定不同
        if(x != y) return false;

        for(int i = 0 ; i < x ; i ++)   if(s1[i] != s2[i])  return false;
        return true;
    }

    public static void main(String[] args ) throws IOException
    {
        int T = rd.nextInt();
        while(T -- > 0)
        {
            char s1[] = rd.next().toCharArray();
            char s2[] = rd.next().toCharArray();

            // 寻找s1的最小循环节
            int minmcs_len_s1 = 0;
            for(int i = 1 ; i <= s1.length ; i ++)
            {
                if(check_mcs(s1,i))
                {
                    minmcs_len_s1 = i;
                    break;
                }
            }

            int minmcs_len_s2 = 0;
            for(int i = 1 ; i <= s2.length ; i ++)
            {
                if (check_mcs(s2,i))
                {
                    minmcs_len_s2 = i;
                    break;
                }
            }

            if(!check_issame_mcs(s1,minmcs_len_s1,s2,minmcs_len_s2))
            {
                pw.println(-1);
            }
            else
            {
                int k1 = s1.length / minmcs_len_s1;
                int k2 = s2.length / minmcs_len_s2;
                int lcm = math_me.lcm(k1,k2);
                for(int i = 1 ; i <= lcm ; i ++)
                {
                    for(int j = 0 ; j < minmcs_len_s1 ; j ++)
                    {
                        pw.print(s1[j]);
                    }
                }
            }
            pw.println();
        }
        pw.flush();
    }
}

class rd
{
    static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer tokenizer = new StringTokenizer("");

    static String nextLine() throws IOException   { return reader.readLine(); }

    static String next() throws IOException
    {
        while (!tokenizer.hasMoreTokens())  tokenizer = new StringTokenizer(reader.readLine());
        return tokenizer.nextToken();
    }

    static int nextInt() throws IOException  { return Integer.parseInt(next()); }

    static double nextDouble() throws IOException { return Double.parseDouble(next()); }

    static long nextLong() throws IOException  { return Long.parseLong(next());}

    static BigInteger nextBigInteger() throws IOException
    {
        BigInteger d = new BigInteger(rd.nextLine());
        return d;
    }
}

class PII
{
    int x,y;
    public PII(int x ,int y)
    {
        this.x = x;
        this.y = y;
    }
}

class math_myself
{
    int gcd(int a,int b)
    {
        if(b == 0)  return a;
        else return gcd(b,a % b);
    }

    int lcm(int a,int b)
    {
        return a * b / gcd(a, b);
    }

    // 求n的所有约数
    List get_factor(int n)
    {
        List<Long> a = new ArrayList<>();
        for(long i = 1; i <= Math.sqrt(n) ; i ++)
        {
            if(n % i == 0)
            {
                a.add(i);
                if(i != n / i)  a.add(n / i);  // // 避免一下的情况:x = 16时,i = 4 ,x / i = 4的情况,这样会加入两种情况  ^-^复杂度能减少多少是多少
            }
        }

        // 相同因子去重,这个方法,完美
        a = a.stream().distinct().collect(Collectors.toList());

        // 对因子排序(升序)
        Collections.sort(a);

        return a;
    }

    // 判断是否是质数
    boolean check_isPrime(int n)
    {
        if(n < 2) return false;
        for(int i = 2 ; i <= n / i; i ++)  if (n % i == 0) return false;
        return true;
    }
}

思路2:

Avalonia 超级详细学习指南 什么是 Avalonia?Avalonia 是一个开源的、跨平台的 GUI 框架,允许开发者使用 XAML 和 C# 构建现代化、高性能的桌面应用程序。与其他框架相比,Avalonia 具有强大的跨平台能力和灵活的界面设计。} }()Avalonia 的特点和优势跨平台性:Avalonia 可以在 Windows、Linux、macOS 等多个平台上运行,开发者可以编写一套代码,然后在不同的操作系统上运行相同的应用程序。 阅读详情

相关推荐

Jetson编译安装pycuda

可使用nvcc --version查看是否有信息输出,若没有,且安装cuda的情况下,需要手动将CUDA 的路径添加到环境变量中。编译生成_pvt_struct.cpython-38-aarch64-linux-gnu.so文件。基于jetson orin nano jetpack512模块上安装pycuda。4、获取pycuda源码(版本根据实际情况获取)2、进入conda环境并安装cuda工具包。9、若未检测出来需要清除并强制编译。7、编译成功后安装pycuda。5、配置编译并设置环境变量。

qq_48175141的博客 972

查找两个字符串a,b中的最长公共子串,两种排序方法,求最小公倍数

1. 两种排序方法 考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如: “car” < “carriage” < “cats” <"doggies < “koala” 2.根据字符串的长度排序。例如: “car” < “cats” < “koala” <“doggies” &lt...

身在边城 心在编程 757

深入理解光流法外推雷达回波

背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设

weixin_44695861的博客 6035

String LCM

先算出两个字符串的最小公倍数,再分别除以字符串长度,构造出两个新的字符串,就是最小公倍数除以老字符串长度个老字符串相加,打个比方,a字符串长度为4,b字符串长度为6,最小公倍数就是12,那么新字符串a就是12 / 4个老的字符串a相加,b同理,如果两个新的字符串相等,九叔出一个新的字符串,否则输出-1。

2301_81718511的博客 559

c# U盘禁用---守护进程(插入,拔出,卸载等操作)

一、简介 传统的对U盘禁用,我们多采用修改注册表的方式,详情参考:https://blog.youkuaiyun.com/qq_25372599/article/details/79815407;本文将介绍一种其他的方式–后台守护程序。其原理非常简单:当守护程序检测到U盘的插入信号,我们自动卸载U盘,致使系统无法识别U盘,达到禁用U盘的效果。 二、程序设计 2.1 变量定义 strin...

星星之火燃亮码空 2846

STP生成树/BPDU保护小实验

HCIA部分—STP生成树小实验 实验环境如图所示,要求: 1.在SW1上配置为根桥,使SW3的G0/0/1口作为根端口 2.在SW1的G0/0/3配置为边缘端口 3.若在SW1的G0/0/3口收到BPDU,能自动关闭该端口 4.通过配置bpdu保护,使端口能自动恢复up状态 首先,我们可以通过命令dis stp brief或者dis stp命令来得知SW1在生成树中的角色 确认SW1为非根交换机,此时可以通过修改stp优先级来让SW1成为根桥: 优先级数值缺省为32768,数值越小,优先级越高,数值

1mih的博客 5149

Java求最大公约数和最小公倍数

Java求最大公约数和最小公倍数

大头皮鞋的博客 947

Transformer实战——Transformer自编码模型

自编码模型依赖于原始 Transformer 编码器,并且在解决分类问题时非常高效。除了 BERT 外,还有许多流行的自编码模型,在本节中,我们将一些除 BERT 外的自编码模型,这些模型的目标是通过优化预训练过程、增加层数或头数、改善数据质量、设计更好的目标函数等,来在下游任务上取得更好的表现。这些改进大致可以分为两个方面,更好的架构设计选择和预训练控制。

盼小辉丶的博客 9334

字符串组合和最小公倍数和最大公约数问题

//例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串 public static void AllArray(string str, string str2 = "") { if (str == null) return; if (str == string.Empt...

weixin_30588827的博客 206

Android Audio音量——音频类型新增(九)

在实际开发中,经常会遇到需要新增一个音频类型(usage)的需求,这里我们简单介绍一下需要修改的代码。

小旭的专栏 1570

【72】【OpenCV C++ & C#】 将cv::Mat 图像转换成imgINFO 传给c#在winform上显示,OpenCV C++如何将处理后的图像传给C#呢? 如何获取图像信息呢?

本文介绍了通过OpenCV C++处理图像后传递给C#的方法。首先定义了一个结构体imgINFO存储图像信息(数据指针、宽高、通道数等),然后通过getImgInfo函数将cv::Mat转换为该结构体。文章特别指出当图像宽度不能被4整除时可能出现失真问题,并给出了两种解决方案:调整输入图像或创建新的对齐图像。此外还解释了img.step和img.cols*img.elemSize()的关系,说明它们在大多数情况下是相等的。最后提到需要通过DLL将结构体传递给C#(具体方法参见其他文章)。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 697

最小公倍数问题,倒置字符串,逆序字符串等

学习小结

C/C++工程师 186

【ESD专题】从原理上分析TVS管PCB Layout的经验法则

我们常常会听到的一些经验法则,按这些经验法则去做,一般也不会有什么问题,但是到底是为什么呢? 没有从原理上分析和证明的时候,往往在Layout之后还要担心实际测试结果怎么样。或是在实际测试出问题后,根本无法进行分析,难道说修改一个版本就好了?那要从哪里修改呢?也无从下手呀。...

一点硬件 1446

在字符串中提取数字求相应的最小公倍数

import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { static int minMultiple(int a, int b) {//最小公约数方法 int r = a, s = a, t = b; if (a &lt...

qq_41109218的博客 268

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2024.8.12 Python,最小公倍数,类与对象,字符串

这个题要求给n求n和2之间的最小公倍数,我最开始的想法是直接用短除法,因为小学就是这么教来的,但是吧,你想当时的短除法如果除2的话,无非就是两种结果,一个是能除一个是不能除两种情况,能除的情况下,最小公倍数=除数×商就等于被除数本身,不能除的情况下,最小公倍数=除数×被除数。%s是一种字符串格式化符号,用来表示字符串的占位符,name.capitalize() 是一个字符串方法,用于将字符串的首字母大写,而其他字母变成小写。这种情况下,他是会在第一个和第二个也就是0和1之间插入新的列表,很怪。

RaidenMessi的博客 646

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

初识C语言第20课-最小公倍数和逆序字符串

例如 i like beijing.逆序后beijing. like i。

sushang的博客 99

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

算法练习-day02统计字符串中字符种类的个数和求两数的最小公倍数

编写一个函数,计算字符串中含有的不同字符的个数。字符在ASCI码范围内(0~127,包括0和127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

m0_52846388的博客 243

C语言解决字符串逆放、阶乘求和、最大公约数和最小公倍数

(1)编写两个函数input()函数和output()函数,分别完成5个学生三门课程的数据记录的输入输出工作,最后由主函数来调用这两个函数,完成具体的输入输出工作。 解题思路:定义两个函数,分别用循环来记录两个学生的三门课程数据记录。 解题代码: #include&lt;stdio.h&gt; void input(float a[][3]) // 定义输入函数 { int m,n...

春江花月夜 1706

3道编程基础必刷题:日期拆分、字符串美化、最小公倍数(附详细题解)

本文介绍了3道编程基础必刷题,涵盖格式处理、字符串遍历和数学公式等核心考点。第一题讲解如何拆分8位日期并格式化输出;第二题通过统计相邻相同字符次数计算美化字符串的最小插入长度;第三题利用辗转相除法求最大公约数,进而计算最小公倍数。每道题都分析了原代码的潜在问题,给出优化后的正确解法,并总结关键考点,包括输入输出格式控制、字符串遍历技巧和避免整数溢出等。这些题目虽然基础,但能有效训练编程细节处理能力,建议通过理清规律、编写代码、检查细节三步法来巩固基本功。

2501_93573368的博客 788

题库练习7(最小公倍数、求立方根、字符串逆序、记负均正、字符串分割)

1. 求最小公倍数 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt...

Zhxin606a的博客 428

C语言刷题:整数加逗号、删除公共字符、求最小公倍数和将字符串倒置

比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这 个数字每三位加一个逗号,它会变得更加易于朗读。正整数 a 和正整数 b 的最小公倍数,是指能被 a 和 b 整除的最小的正整数。条件的注意点:当只剩下一个字符没有被交换的时候,也就是left==right的时候,他们是不需要交换的。我们观察题目,发现字符串有多个空格,而我们的sacnf函数是不方便输入空格的,所以我们使用gets函数。逆置该单词:直接调用刚才所撰写的逆置字符串函数即可,这就完成了一个单词的逆置。

2301_77053417的博客 565

回文字符串判断、素数的判断、求最大公约数最小公倍数(c++)

#include<iostream> using std::cin; using std::cout; using std::endl; using std::boolalpha; //判断是否是回文字符串串 bool judgePalindrome(char* str, int len) { // 判断第 i 个字符是否和倒数第 i 个字符相等 for (int i = ...

雾隐雾现的至渝博客 1万+

java求最小公倍数,最大公倍数,Java整数和字符串的相互转化,int或者char字符转字符串使用String.valueOf()

题目描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。 输入描述: 输入两个正整数A和B。 输出描述: 输出A和B的最小公倍数。 示例1 输入 5 7 输出 35 public int lcm(int x, int y) { for (int i = 1; i < x * y; i++) { if (i % x == 0 && i % y == 0) ..

m0_56231540的博客 1404

冰冰学习笔记:求最大公约数,最小公倍数。复杂版逆序字符串

练习题的讲解

bingbing_bang的博客 201

蓝蓝计算机考研算法-day02字符串中字符不同个数和两数的最小公倍数

算法练习

家旭的博客 181

string类的函数,字符串的函数,stack容器,multiset函数,进制转换函数和最小公倍数求法--华为机试笔记2

1. string类的substr函数,题目:字符串分隔 2. string类的append函数

JiWei0811的博客 240
上一篇: GCD的题目
下一篇: 图、思维、入度出度
21RGHLY
博客等级 码龄5年 44粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

21RGHLY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值