Esse interessante problema li em NRICH enriching mathematics.
Lá o problema é apresentado fazendo a pergunta sobre o dígito 5.
Se bem observarmos, o dígito 5 aparece 16 vezes em cada hora normal.
00:05 - 1 00:15 - 2 00:25 - 3 00:35 - 4 00:45 - 5 00:50 - 6 00:51 - 7 00:52 - 8 00:53 - 9 00:54 - 10 00:55 - 11 00:55 - 12 00:56 - 13 00:57 - 14 00:58 - 15 00:59 - 16
E aparece 76 vezes às 05:mm e às 15:mm, pois nesses horários há repetição em 05:05, 05:15,... e também em 05:55.
Assim, o cálculo é feito somando-se:
- 22 horas em que o 5 aparece 16 vezes MAIS
- 2 horas em que o 5 aparece 76 vezes Ou seja, (22x16) + (2x76) = 352 + 152 = 504
Então, tive a ideia de escrever um programinha em Powershell que calcule quantas vezes cada dígito 0,1,2,3,... aparece no relógio digital durante 1 dia e ao final exiba um relatório.
Function QuantoApareceEm24Horas([Int32] $digito) { [Int32] $dig1, $dig2, $dig3, $dig4, $contador=0 ## Primeiro Horários 0h:mm e 1h:mm For ($dig1=0; $dig1 -le 1; $dig1++) { ## 0,1 ########## $dig2 ############ For ($dig2=0; $dig2 -le 9; $dig2++) { ## 0,1,2,3,4,5,6,7,8,9 ########## $dig3 ############ For ($dig3=0; $dig3 -lt 6; $dig3++) { ## 0,1,2,3,4,5 ########## $dig4 ############ For ($dig4=0; $dig4 -le 9; $dig4++) { ## 0,1,2,3,4,5,6,7,8,9 If ($dig1 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } If ($dig2 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } If ($dig3 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } If ($dig4 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } } ##$dig4 } ## dig3 } ## dig2 } ## dig1 ## Horários 20, 21, 22, 23 $dig1=2 For ($dig2=0; $dig2 -le 3; $dig2++) { ## 0,1,2,3 For ($dig3=0; $dig3 -le 5; $dig3++) { ## 0,1,2,3,4,5 For ($dig4=0; $dig4 -le 9; $dig4++) { ## 0,1,2,3,4,5,6,7,8,9 If ($dig1 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } If ($dig2 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } If ($dig3 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } If ($dig4 -eq $digito) { $contador++ Write-Host $dig1$dig2":"$dig3$dig4" - "$contador } } ## $dig4 } ## $dig3 } ## $dig2 Return $contador } ##Function Clear-Host $Numeros=@() [Int32] $i For ($i=0; $i -le 9; $i++) { Write-Host -ForegroundColor Yellow "######################################" Write-Host -ForegroundColor Yellow "Calculando quantas vezes o dígito"$i Write-Host -ForegroundColor Yellow "aparece em relógio digital em 1 dia" Write-Host -ForegroundColor Yellow "######################################" $Numeros += QuantoApareceEm24Horas $i } Write-Host -ForegroundColor Green "######################################" Write-Host -ForegroundColor Green "Relatório de Execução:" For ($i=0; $i -le 9; $i++) { Write-Host -ForegroundColor Cyan "O dígito" $i "aparece" $Numeros[$i]"vezes em 24 horas." }
Nenhum comentário:
Postar um comentário