Project Euler Homework
|
00001 00029 #include <iostream> 00030 using namespace std; 00031 00032 const int length = 1000; //number of digits 00033 char str[length + 1] = 00034 "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"; 00035 //string representation of the number 00036 00037 inline char 00038 no (char *p) 00039 { 00040 return (*p) - '0'; 00041 } //change string to number 00042 00043 int 00044 main () 00045 { 00046 char *p = str; //pointer 00047 unsigned product = 00048 no (p) * no (p + 1) * no (p + 2) * no (p + 3) * no (p + 4); 00049 00050 unsigned max_product = product; 00051 int position = 0; //position 00052 00053 do 00054 { 00055 p++; //move on to next digit. 00056 product = no (p) * no (p + 1) * no (p + 2) * no (p + 3) * no (p + 4); 00057 00058 if (product > max_product) 00059 { 00060 position = p - str + 1; 00061 max_product = product; 00062 } 00063 00064 } 00065 while (*(p + 5) != 0); //until end of line. 00066 00067 cout << "The max product is " << max_product << " at " << position << 00068 "-th digit" << endl; 00069 return 0; 00070 } 00071