方法:大数乘法 大数乘小数
代码:
//tzc1086 hdu1313 //注意string与cstring的不同 //string类定义的是主要是运算符重载, //而cstring类相当于string.h,包含的是strlen的函数 #include <iostream> #include <cstring> #include <vector> #include <string> using namespace std; void mult(char c[],char t[],int m) { int i,l,k,flag,add=0; char s[100]; l=strlen(c); for (i=0;i<l;i++)s[l-i-1]=c[i]-'0'; for (i=0;i<l;i++) { k=s[i]*m+add; if (k>=10) {s[i]=k%10;add=k/10;flag=1;} else { s[i]=k;flag=0;add=0; } } if (flag) {l=i+1;s[i]=add;} else l=i; for (i=0;i<l;i++)t[l-1-i]=s[i]+'0'; t[l]='\0'; } void change(char *s) { char tmp=s[0]; int i; for(i=1;i<strlen(s);i++)s[i-1]=s[i]; s[i-1]=tmp;s[i]='\0'; } int main() { char str[80],tmp[80]; while(cin>>str) { cout<<str; strcpy(tmp,str); vector <string> v; string s; int i,j; for(i=0;i<strlen(str);i++) { change(tmp);s=tmp; v.push_back(s); } char res[80]; string t; for(i=1;i<=strlen(str);i++) { mult(str,res,i);t=res; for(j=0;j<v.size();j++) { if(t==v[j])break; } if(j==v.size())break; } if(i>strlen(str))cout<<" is cyclic"<<endl; else cout<<" is not cyclic"<<endl; } return 0; }
有疑问加站长微信联系(非本文作者)