2串LCM
LCM of 2 strings
鉴于数字和字符串之间存在乘法运算,如果 x 是数字且 s 是字符串,则 s*x 等于字符串 s,因此我必须找到 2 个字符串的 LCM拍了 x 次。
给出的字符串是“baba”和“ba”。现在我什至无法开始使用它,因为如果 LCM 不存在,我必须打印 -1。
请帮忙解决这个问题。我只是c++的初学者。
两个字符串的lcm可以通过计算它们长度的lcm来找到(感谢@Damien)。
int gcd(int a, int b){
if (b==0)
{
return a;
}
return gcd(b,a%b);
}
int lcm(int a,int b){
return (a/gcd(a,b))*b;
}
在你得到它们长度的 lcm 之后,然后你将每个字符串附加到它自己,直到字符串的长度与其长度的 lcm 相同。
string StringLCM(string s,int n){
string result = s;
for (int i = 0; i < n-1; i++)
{
result.append(s);
}
return result;
}
THe StringLCM 函数returns 长度等于 LCM 的字符串。
现在只需比较 2 个字符串并检查它们是否相等。如果找不到 LCM,程序将打印 -1。
下面是完整的代码。
#include<iostream>
using namespace std;
int gcd(int a, int b){
if (b==0)
{
return a;
}
return gcd(b,a%b);
}
int lcm(int a,int b){
return (a/gcd(a,b))*b;
}
string StringLCM(string s,int n){
string result = s;
for (int i = 0; i < n-1; i++)
{
result.append(s);
}
return result;
}
int main(){
string s1 = "aba";
string s2 = "ab";
int n1= s1.length();
int n2= s2.length();
int l=lcm(n1,n2);
cout<<l<<endl;
int flag=0;
int e =-1;
s1=StringLCM(s1,l/n1);
cout<<s1<<endl;
s2=StringLCM(s2,l/n2);
cout<<s2<<endl;
if (s1==s2)
{
flag=1;
}
if (flag==1)
{
cout<<s1<<endl;
}else
{
cout<<e<<endl;
}
return 0;
}
鉴于数字和字符串之间存在乘法运算,如果 x 是数字且 s 是字符串,则 s*x 等于字符串 s,因此我必须找到 2 个字符串的 LCM拍了 x 次。
给出的字符串是“baba”和“ba”。现在我什至无法开始使用它,因为如果 LCM 不存在,我必须打印 -1。
请帮忙解决这个问题。我只是c++的初学者。
两个字符串的lcm可以通过计算它们长度的lcm来找到(感谢@Damien)。
int gcd(int a, int b){
if (b==0)
{
return a;
}
return gcd(b,a%b);
}
int lcm(int a,int b){
return (a/gcd(a,b))*b;
}
在你得到它们长度的 lcm 之后,然后你将每个字符串附加到它自己,直到字符串的长度与其长度的 lcm 相同。
string StringLCM(string s,int n){
string result = s;
for (int i = 0; i < n-1; i++)
{
result.append(s);
}
return result;
}
THe StringLCM 函数returns 长度等于 LCM 的字符串。 现在只需比较 2 个字符串并检查它们是否相等。如果找不到 LCM,程序将打印 -1。 下面是完整的代码。
#include<iostream>
using namespace std;
int gcd(int a, int b){
if (b==0)
{
return a;
}
return gcd(b,a%b);
}
int lcm(int a,int b){
return (a/gcd(a,b))*b;
}
string StringLCM(string s,int n){
string result = s;
for (int i = 0; i < n-1; i++)
{
result.append(s);
}
return result;
}
int main(){
string s1 = "aba";
string s2 = "ab";
int n1= s1.length();
int n2= s2.length();
int l=lcm(n1,n2);
cout<<l<<endl;
int flag=0;
int e =-1;
s1=StringLCM(s1,l/n1);
cout<<s1<<endl;
s2=StringLCM(s2,l/n2);
cout<<s2<<endl;
if (s1==s2)
{
flag=1;
}
if (flag==1)
{
cout<<s1<<endl;
}else
{
cout<<e<<endl;
}
return 0;
}