#include <iostream> #include <math.h> using namespace std; //metodo para obtener el i-esimo caracter de la concatenacion de 1,2,3,4,5... int d(int i) { int cd = 0; //cantidad de digitos int cda = 0; //cantidad de digitos acumulados int scd = 0; //siguiente cantidad de dtitos while( cda + scd < i) { cda += scd; cd++; scd = (pow(10,cd)-pow(10,cd-1))*cd; } int numactual = pow(10,cd-1)-1;//numero actual hasta el cual se sumo while(cda < i) { cda += cd; numactual++; } int csp = (cda-i); while(csp--) numactual /= 10; return numactual%10; } int main() { cout << d(1)*d(10)*d(100)*d(1000)*d(10000)*d(100000)*d(1000000)<<endl; return 0; }
jueves, 15 de marzo de 2012
Project Euler 40
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario