这几天学校的网络烂的可以,午夜12点前连个QQ都登不上,几天没做题了,找几个水题练练手~ 用到了字符串的简单乘法,再判断2个字符串是否循环相等。 #include <iostream> #include <string> using namespace std; bool jud(string &a,string &b){ //判断2个字符串是否循环相等 int size=(int)b.size(),num=size; string temp; for(int i=0;i<size;++i){ //从第i个字符开始循环 num=1; temp.clear(); for(int j=i;num<=size;++j){ if(j==size) j=0; temp+=b[j]; ++num; } if(temp==a) return true; } return false; } string mul(string &str,int &k){ //字符串相乘 string s,s1; char c; int size=(int)str.size(),pre=0,t,temp,re; for(int i=size-1;i>=0;--i){ t=(int)(str[i]-'0')*k; temp=t%10; re=temp+pre; if(re>=10){ //相加进位 re=re-10; pre=1; } else pre=0; c=(char)(re+'0'); s=s+c; t/=10; pre=pre+t%10; //相乘进位 } for(int i=0;i<size;++i){ //将s转置 s1.insert(s1.begin(),s[i]); } return s1; } bool deal(string &str){ //处理字符串 string temp; bool boo; for(int i=1;i<=6;++i){ temp=mul(str,i); boo=jud(str,temp); if(!boo) return false; } return true; } int main(){ string str; bool boo; while (cin>>str) { boo=deal(str); if(boo) cout<<str<<" is cyclic"<<endl; else cout<<str<<" is not cyclic"<<endl; } return 0; }