題目連結:pku1047 hdu1313 tzc1086
方法:大數乘法 大數乘小數
代碼:
//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;}