#include<iostream> #include<fstream> #include<vector> #include<math.h> #include<time.h> #include<string> using namespace std; int main() { double start = clock(),end(0); vector<int> circletable;//循环判断表 vector<int> circlepart;//循环部分,答案输出用 vector<int> temp; size_t longest = 0;//最长循环 int testnum = 0; //int remainder = 1;//余数 int quotient = 0;//商 bool cheak = true; for(int i = 1; i<1001; i++) { cheak = true; circletable.clear(); temp.clear(); int remainder = 1;//余数 quotient = 0;//商 while(cheak) { if(i<11) { quotient = (int)remainder * 10 / i; remainder = remainder * 10 % i; } else if(i>10 && i<100) { quotient = (int)remainder * 100 / i; remainder = remainder * 100 % i; } else if(i>99) { quotient = (int)remainder * 100 / i; remainder = remainder * 1000 % i; } if(0 == remainder) { cheak = false; continue; } //circletable.push_back(remainder); for(size_t index = 0; index!=circletable.size(); index++) { if( remainder == circletable[index]) { cheak = false; break;//如果循环判断表内元素有重复则停止往内添加 } if( index == circletable.size()-1 && remainder != circletable[index]) { circletable.push_back(remainder);//将余数放入循环判断表 temp.push_back(quotient); break; } } if(circletable.empty()) { circletable.push_back(remainder); temp.push_back(quotient); } } if( temp.size() > longest ) { circlepart.clear(); circlepart.insert(circlepart.end(),temp.begin(),temp.end()); longest = circlepart.size(); cout << i << " = "<< longest << endl; } } //cout << "the longest recurring cycle is "; for(vector<int>::iterator iter = circlepart.begin(); iter!= circlepart.end(); iter++ ) { cout << *iter; } end = clock(); double runtime = (end - start)/1000; cout.setf(ios::fixed); cout << endl << "run time is " << runtime << endl; system("PAUSE"); return 0; } #include<iostream> #include<fstream> #include<vector> #include<math.h> #include<time.h> #include<string> using namespace std; int main() { double start = clock(),end(0); vector<int> circletable;//循环判断表 //vector<int> circlepart;//循环部分,答案输出用 //vector<int> temp; size_t longest = 0;//最长循环 int d = 0; //所求答案 bool cheak = true; for(int i = 1; i<1000; i++) { cheak = true; circletable.clear(); //temp.clear(); int remainder = 1;//余数 //int quotient = 0;//商 //quotient = 0;//商 while(cheak) { if(i<11) { //quotient = (int)remainder * 10 / i; remainder = remainder * 10 % i; } else if(i>10 && i<100) { //quotient = (int)remainder * 100 / i; remainder = remainder * 100 % i; } else if(i>99) { //quotient = (int)remainder * 100 / i; remainder = remainder * 1000 % i; } if(0 == remainder) { cheak = false; continue; } for(size_t index = 0; index!=circletable.size(); index++) { if( remainder == circletable[index]) { cheak = false; break;//如果循环判断表内元素有重复则停止往内添加 } if( index == circletable.size()-1 && remainder != circletable[index]) { circletable.push_back(remainder);//将余数放入循环判断表 //temp.push_back(quotient); break; } } if(circletable.empty()) { circletable.push_back(remainder); //temp.push_back(quotient); } } if( circletable.size() > longest ) { //circlepart.clear(); //circlepart.insert(circlepart.end(),circletable.begin(),circletable.end()); longest = circletable.size(); d = i; } } //cout << "the longest recurring cycle is "; //for(vector<int>::iterator iter = circlepart.begin(); iter!= circlepart.end(); iter++ ) //{ // cout << *iter; //} cout << d << endl; end = clock(); double runtime = (end - start)/1000; cout.setf(ios::fixed); cout << endl << "run time is " << runtime << endl; system("PAUSE"); return 0; } #include<iostream> #include<vector> #include<time.h> using namespace std; int main() { double start = clock(),end(0); vector<int> circletable;//循环判断表 size_t longest = 0;//最长循环 int d = 0; //所求答案 bool cheak = true; for(int i = 1; i<1000; i++) { cheak = true; circletable.clear(); int remainder = 1;//余数 while(cheak) { if(i<11) { remainder = remainder * 10 % i; } else if(i>10 && i<100) { remainder = remainder * 100 % i; } else if(i>99) { remainder = remainder * 1000 % i; } if(0 == remainder) { cheak = false; continue; } for(size_t index = 0; index!=circletable.size(); index++) { if( remainder == circletable[index]) { cheak = false; break;//如果循环判断表内元素有重复则停止往内添加 } if( index == circletable.size()-1 && remainder != circletable[index]) { circletable.push_back(remainder);//将余数放入循环判断表 break; } } //初次向向量容器内添加容器 if(circletable.empty()) { circletable.push_back(remainder); } } if( circletable.size() > longest ) { longest = circletable.size(); d = i; } } cout << d << endl; end = clock(); double runtime = (end - start)/1000; cout.setf(ios::fixed); cout << endl << "run time is " << runtime << endl; system("PAUSE"); return 0; }