
# include <stdio.h>
# include <math.h>

#define TAM_MAX 10

double existe_1( char *num, int N);
double f(int n, int m);

int main(void)
{	
	char num[TAM_MAX];
	double numero,a,b;
	int N,i,j,n;
	double resp=0;
		

	printf("Digite um número: ");
	scanf("%s",num);	
	N=strlen(num);	 //lembrar que ultima posicao do vetor é N-1   	
	
	for (i=0;i<=N-2;i++){	
		n=(num[i]-'0')-1;
		resp = resp + f( n , N-i-1 );	       
	}
	if ( (num[N-1]-'0') >=1 )
		resp = resp +1;

	a=existe_1(num,N);
	b=resp+a;
	//	numero=atoi(num);
	printf("%f   \n",b );
	
}

double existe_1(char *num, int N){
	int i,j,k=0;
	int a=0;
	
	for (i=0;i<N-1;i++){  // o ultimo digito nao vai ser contado
		if ((num[i]-'0')==1){
			k++;
			for (j=i+1;j<N;j++){				
				a = a + (num[j]-'0')*pow(10,N-j-1);
 			}
		}
	}			
	return (a+k);
}

double f( int n, int m){

	if (n==-1){
		return(0);
	}else if(n==0){	
		return( m*pow(10,m-1) );
	}else{
		return( pow(10,m) + (n+1)*m*pow(10,m-1) );
	}
}
	
	
	
	

