fork download
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. bool equiv_cyc(const string &u, const string &v)
  7. {
  8. if (u.size()!= v.size())
  9. {
  10. return false;
  11. }
  12. if (u.empty())
  13. {
  14. return true;
  15. }
  16.  
  17. string x = u;
  18. size_t n = x.size();
  19. for (size_t i=0; i<n; ++i)
  20. {
  21. if (std::equal(u.begin(), u.end()-i, v.begin()+i, v.end())
  22. && std::equal(u.end()-i, u.end(), v.begin(), v.begin()+i))
  23. {
  24. return true;
  25. }
  26. }
  27. return false;
  28. }
  29.  
  30. int main() {
  31. string a, b;
  32.  
  33. while (cin >> a >> b)
  34. {
  35. cout << a << " " << b << " " << std::boolalpha << equiv_cyc(a, b) << endl;
  36. }
  37. return 0;
  38. }
Success #stdin #stdout 0s 3468KB
stdin
a a
b c
ab ab
ba ab
aac acc
cad adc
kajak kajak
kajak jakka
1234567890 0123456789
1234567890 2345678901
1234567890 2345678910
stdout
a a true
b c false
ab ab true
ba ab true
aac acc false
cad adc true
kajak kajak true
kajak jakka true
1234567890 0123456789 true
1234567890 2345678901 true
1234567890 2345678910 false