Un número entero de 1 32. número A que aparece en
título Descripción
Calculó el número de entero de 1 a 13 1 surgen, y calcula el número de veces que un número entero desde 100 hasta 1300 en 1 ocurren? Con este fin se contó especialmente de 1 a 13 contiene los dígitos 1 ha 1,10,11,12,13, por tanto, aparecen un total de seis veces, pero para el problema detrás de él Meizhe. ACMer espero que le ayudará a él, y el problema es más generalizado, el número de número entero no negativo en el aparece rango 1 (el número de ocurrencias de 1 a n. 1) de forma rápida puede encontrar ninguna.
Un pensamiento:
Pensar dos:
A partir del 1 - n, respectivamente contar el número de cada uno de los números 1
1 público clase Solution { 2 público int NumberOf1Between1AndN_Solution ( int n-) { 3. // DP [I] representa de 1 - i en número de todos el número de 1s 4. // DP [I] + CNT; // CNT representa el número actual de número 1 en 5 // contar el número de cada uno de los números 1, la correcta, 31 veces a la derecha 6. 7. int COUNT = 0 ; . 8 para ( int I = 1 ; I <= N-; I ++ ) { 9 // cada estadística en el número de 1, un derecho, el derecho 31 Tiempos 10 int tmp = I; . 11 el mientras(tmp! = 0 ) { 12 recuento + = (% tmp 10 == 1 )? 1 : 0 ; 13 tmp / = 10 ; 14 } 15 } 16 de retorno recuento; 17 } 18 }