#include <bits/stdc++.h>
using namespace std;
string mult(string s, int a)
{
int c = 0, d;
for(int i = s.length()-1; i >= 0; i--)
{
d = (s[i]-'0')*a+c;
c = d/10;
s[i] = d%10+'0';
}
if(c > 0)//如果乘完位数变多,则不考虑这种情况,直接返回空字符串
return string("");
else
return s;
}
bool isSame(string st, string s)//s是否与st循环相等
{
string s1, s2;
if(s.length() != st.length())//如果二者长度不等,那么肯定不同。
return false;
for(int i = 0; i < s.length(); ++i)//下标0~i-1为子串s1,下标i到末尾为子串s2
{
s1 = s.substr(0, i);
s2 = s.substr(i, s.length()-i);
if(s2+s1 == st)//s1接在s2右侧,看是否与st相同
return true;
}
return false;
}
int main()
{
string s, st;
cin >> st;
for(int i = 1; i <= st.length(); ++i)
{
s = mult(st, i);
if(isSame(st, s) == false)
{
cout << 0;
return 0;//直接结束
}
}
cout << 1;
return 0;
}
2982 循环数
最新推荐文章于 2024-05-20 19:43:04 发布