- #include<bits/stdc++.h> 
- #include <boost/multiprecision/cpp_int.hpp> 
- using boost::multiprecision::cpp_int; 
- using namespace std; 
-   
- int32_t main() { 
- 	int start = clock(); 
- 	int p = 8624; 
- 	cpp_int M; 
- 	bit_set(M, p); 
- 	M = M-1; // M = 2^p - 1; 
- 	cpp_int S; 
- 	S = 4; 
- 	while(p>2) { 
- 	         S = pow(S, 2); 
- 	         S -= 2; 
-   
- 	         S %= M; 
- 	         p--;          
- 	} 
- 	// cout << S << endl; 
- 	int end = clock(); 
- 	cout << "time: " << (end - start)/(double)(CLOCKS_PER_SEC)*1000 << " milliseconds\n"; 
-   
- } 
				I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGJvb3N0L211bHRpcHJlY2lzaW9uL2NwcF9pbnQuaHBwPgp1c2luZyBib29zdDo6bXVsdGlwcmVjaXNpb246OmNwcF9pbnQ7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQzMl90IG1haW4oKSB7CglpbnQgc3RhcnQgPSBjbG9jaygpOwoJaW50IHAgPSA4NjI0OwoJY3BwX2ludCBNOwoJYml0X3NldChNLCBwKTsKCU0gPSBNLTE7IC8vIE0gPSAyXnAgLSAxOwoJY3BwX2ludCBTOwoJUyA9IDQ7Cgl3aGlsZShwPjIpIHsKCSAgICAgICAgIFMgPSBwb3coUywgMik7CgkgICAgICAgICBTIC09IDI7CgkKCSAgICAgICAgIFMgJT0gTTsKCSAgICAgICAgIHAtLTsgICAgICAgICAKCX0KCS8vIGNvdXQgPDwgUyA8PCBlbmRsOwoJaW50IGVuZCA9IGNsb2NrKCk7Cgljb3V0IDw8ICJ0aW1lOiAiIDw8IChlbmQgLSBzdGFydCkvKGRvdWJsZSkoQ0xPQ0tTX1BFUl9TRUMpKjEwMDAgPDwgIiBtaWxsaXNlY29uZHNcbiI7Cgp9