Revision: 42223
Updated Code
at March 2, 2011 02:37 by tom76kimo
Updated Code
#include <cstdlib> #include <iostream> #include <fstream> #include <ctime> using namespace std; int three_n_plus_one(unsigned int n) { int times(1); //cout << n << " "; if(n == 1) return times; if((n%2) == 1) times += three_n_plus_one( ((n*3)+1) ); else times += three_n_plus_one( (n/2) ); return times; } int find_max_times(unsigned int begin, unsigned int end) { int max(0); int temp_result(0); int temp_begin_end(0); if(begin > end) { temp_begin_end = end; end = begin; begin = temp_begin_end; } for(unsigned int i=begin; i<=end; ++i) { temp_result = three_n_plus_one(i); if(temp_result > max) max = temp_result; } return max; } int main(int argv, char* argc[]) { clock_t start = clock(); string out_file_name(argc[1]); out_file_name.replace(5, 2, "out"); ifstream fin(argc[1], ios::in); ofstream fout(out_file_name, ios::out); unsigned int begin(0), end(0); while(!fin.eof()) { fin >> begin; fin >> end; if(!begin || !end) { cout << "read invalid value" << endl; exit(1); } fout << begin << " " << end << " " << find_max_times(begin, end) << " "; } fin.close(); fout.close(); cout << "cost :" << clock()-start << "ms" << endl; return 0; }
Revision: 42222
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 1, 2011 20:18 by tom76kimo
Initial Code
#include <cstdlib> #include <iostream> #include <fstream> #include <ctime> using namespace std; int three_n_plus_one(unsigned int n) { int times(1); //cout << n << " "; if(n == 1) return times; if((n%2) == 1) times += three_n_plus_one( ((n*3)+1) ); else times += three_n_plus_one( (n/2) ); return times; } int find_max_times(unsigned int begin, unsigned int end) { int max(0); int temp_result(0); for(int i=begin; i<=end; ++i) { temp_result = three_n_plus_one(i); if(temp_result > max) max = temp_result; } return max; } int main(int argv, char* argc[]) { clock_t start = clock(); string out_file_name(argc[1]); out_file_name.replace(5, 2, "out"); ifstream fin(argc[1], ios::in); ofstream fout(out_file_name, ios::out); unsigned int begin(0), end(0); while(!fin.eof()) { fin >> begin; fin >> end; if(!begin || !end) { cout << "read invalid value" << endl; exit(1); } fout << begin << " " << end << " " << find_max_times(begin, end) << " "; } fin.close(); fout.close(); cout << "cost :" << clock()-start << "ms" << endl; return 0; }
Initial URL
Initial Description
Initial Title
《The 3n + 1 problem》
Initial Tags
Initial Language
C++