Stringholics algorithm
Stringholics algorithm
本文关键字:algorithm Stringholics 更新时间:2023-10-16
以下是我正在尝试的问题的链接。 https://www.interviewbit.com/problems/stringoholics/
我的代码适用于链接中给出的简单情况。
//function to compute gcd
long long int gcd(long long int a, long long int b)
{
if (b == 0)
return a;
return gcd(b, a % b);
}
//function to compute LCM
long long int findlcm(vector<long long int> a)
{
long long int ans = a[0];
// ans contains LCM of arr[0], ..arr[i]
// after i'th iteration,
for (int i = 1; i < a.size(); i++)
ans = ((((a[i] % 1000000007 * ans % 1000000007))) % 1000000007 / (gcd(a[i] % 1000000007, ans % 1000000007)));
return ans % 1000000007;
}
//function to solve given problem
int solve(vector<string>& A)
{
vector<long long int> a; //vetor to store no.of rotations requireda
for (int i = 0; i < A.size(); i++) {
long long int j = 1; //variable to keep track of no.of rotations
string curr = A[i]; //original ith string
long long int n = curr.length(); //length of ith string
// leftrotatio of string by 1 element
rotate(A[i].begin(), A[i].begin() + j, A[i].end());
//to check if modifies string is same as original
if (A[i] == curr)
a.push_back(j);
else {
while (A[i] != curr) {
rotate(A[i].begin(), A[i].begin() + (j + 1) % n, A[i].end());
j++;
}
a.push_back(j + 1);
} //pushing no.of rotations for ith element
}
long long int c = findlcm(a);
return (int)(c);
}
输入:
A : [ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"babaaaabbaba",
"baaaaababaabbaaaaabbbbbbbaabbaaaababbabaababaabaaabbbaaaaa",
"abaabb",
"aababbbbabbaaaabbaaaaaaaababbbabbbbaabbaabaabbaabaababbbababaababaabbababaaabaaaab",
"babaaaaababbbbbabbbbabbaaabaaaababbabbaabbbabbaaaabbbabaaaabaaaababb",
"bbbbbbaaaaaabbbbbbababaabaabbbbbaaabbabbaabbbbaaaaaababbabaaabbabbabbbabbaabbabbbbaabbbaaaaabbabaaab",
"aabaaabaabbbbababbabbabaaaababbababbbabbbbaabbaaaaababbbbbababbbbaaababababab",
"aaaababbbaabbbabaabb",
"ababaaaabbabbbbaaabbababbbabbbabaaa",
"aaabaabbbabaa",
"baababbababbbbbabbabaabbabbbbbaaaabaaaababaa",
"babaa",
"abbabababbbbbbbbbbbaaaaaababbababaaabbbaaaabbbababbabaabbaabbbbaabbbaabbababababaabaaabbaaabbba",
"ababbaabbaaabbbabaabababbbabaaabbbaababaaa",
"abbaaaababbbbaaabaaaabaaaaabaababbabbaababbbabbbbbbbbbabbaabaaabbaaababbbaa",
"bbabababaabbabbabbbabbaababbabaaabbbababab",
"abbbaaabaab",
"bbaaabbaaabbaabbabababa",
"aabaabaaaaaaabaabbbaaababbbbbbababbaabababbaaaaabbabbbabbbaababbaabababbbbbbbbbaabaab",
"babbaaabbabbaabaaabbb",
"bbabaabba",
"baabaaaaabbaaaaaabbbbaaaabababa",
"babbaababaaba",
"baabaabaabbababbaabbabbbbbabaaaabbbbbabbabbbbbabbbabaabbbbabbbbaaabbbbabababaaaababbaaabbabb",
"abbbbaaaabaabbabbaababaabbababbbaaabbabbbbbaaabbabbaabbb",
"bababaaaaabababbabbaabababbbaabbaabaabaabbabbbababbaaabababbababbbb",
"abaaabbbabbbaabba",
"bbbbaaaabbbababaabbbababaaaababbaaaaaabbbabbaababababbba",
"bababaabaaaabbaabbababbaabbaabaabbaaaaaaaababbaaaaaabbaaabaabaaababbababbbbaabbabbabaabab",
"aabbbabaaabababaabbbbaabbabaaabbbaaabbabbbbabaabbbbaabbbaaaaabbbabbbbb",
"aabbbbbbabaabbbabbaababbababaabaaababbbbabbbaababaaaabbaaabaaabaaaabbbabababbab",
"abaaaaababbabaabbbaaaaabbaaaabaaaaaaaababbaabbbaabbabbbabbaaaaaab",
"bbbaabbabbbbbbaaaabbabbbbbbbaaabaababbaaaabbbaababbaaabbbbbbbbabbabababbaaabaabaaabaaaabbbbbabaabaaa",
"bbaaabaaabaaabaabaaabbaabaabbabaabaabbababaaaaabaabbbbaba",
"abaababaaabbabaabaabbbaaabbaabababbabaaabbbbabbbbbaaaaa",
"abba",
"abbbababbaaabbaaabbbabaabbababaaabbbbaaaaababbabbaabbabbbaaabaabbaaaaabaaaabbbaabbbabbbbbbbabb",
"bbabbaaabaaaabbaaaabbbaaaababbbaabaaaaab",
"abbaabaabbaaaaaaaabbaabbabbababaaaaaaabbabaabaabbbabbaabbaababbaabbaba",
"bbbbaababbaaaaaaaaabbbabbbabaabababaababaababa",
"baaabaabbbbbbaabbabbbabaaaaababaabaababbbaaaaaaaabbbbbabbabaaaaaaaabababaabaababaaabbaaaaaaaaabaa",
"aababbbabbaaaaababbabaababbbbbbbbaaabbaaaaabbaabbbba",
"ababababaaaaaabbbabbaaababaabb",
"bababbaababaabbbabbaab",
"baababababbaaaaabbbbbbbbbaabababb",
"bbbbb",
"aabaabbbaabababbababaaaaabbbbaababaabbabbbbbbaabbaaabbababbbabbabbbaabbbab",
"bbaabbbbaabbaaaaaabbbaabababbbaabaaabbbbbabaababbbaababbbaaabaaabaaaababbbbaabbaababb",
"aaababbaaaaabaabababbabaabbbbabbaba" ];
实际结果:423191921
预期成果:487555988
我认为你必须取 gcd 的模逆,然后将结果乘以它,然后保存在 ans 变量中,因为模算术中的除法是通过取模逆来完成的。
相关文章:
- C++ <algorithm> 使用对象作为比较定义的 sort()
- TicTacToe with MiniMax algorithm 4x4
- 为什么 std::erase(std::erase_if) 不是适用于<algorithm>任何容器的模板?
- is_permutation方法从 #include<algorithm> 显示错误的输出
- 设置::查找和查找之间的性能差异<algorithm>
- Stringholics algorithm
- Next_Permutation algorithm
- C++ SFINAE : is_constructible for const char[] vs std::strin
- 我不使用<algorithm>标题,但 sort() 可用
- std::max在包含<algorithm>后无法解析
- <algorithm> 定义宏 X 吗?
- 在 C++ <algorithm>中查找函数
- 我可以打电话给<algorithm>空旷的设施吗?
- 使用不带 or 循环的递归反转字符串<algorithm>
- 使用排序自<algorithm>对对象进行排序
- "bubble sort algorithm"小错误
- C++ 在<functional> <algorithm> 某个点使用 and 将向量拆分为 2
- 是否可以使用 and 将向量的所有数字相加<functional><algorithm>?
- C++使用 <algorithm> 和 <functional>从矢量中删除双精度
- <algorithm> 使用对象进行矢量排序?