1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?
8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다.
(※(注記) 예를들어 8808은 3, 8888은 4로 카운팅 해야 함)
cuantos_ocho = 0
for i in range(1, 10001):
str_i = str(i)
cuantos_ocho += str_i.count('8')
print(cuantos_ocho)
2024年03月12日 15:00
```{.java}
```public static void main(String[] args) {
int max = 10000;
int addResult = 0;
int[] intResult = new int[5];
for (int a = 1; a <= max; a++) {
String inputString = String.valueOf(a);
String[] result = inputString.split("");
for (int i = 0; i <result.length; i++) {
intResult[i] = Integer.parseInt(result[i]);
if (intResult[i] == 8) {
addResult = addResult + 1;
}
}
}
System.out.println("8 의 수 : " + addResult);
}
2024年04月01日 11:39
eight_num = 0
for n in range(1, 10000+1):
n_str = str(n)
eight_num += n_str.count('8')
print(eight_num)
2024年10月16日 19:14
# 1개의 8이 있을 경우: 예) XXX8(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 1개 할당하는 경우의 수는 조합으로 구함: C(4, 1) = 4!/1!(4-1)! = 4
# 경우의 수 x 9 x 9 x 9 x 8의 개수: 4 x 9 x 9 x 9 x 1 = 2916
# 2개의 8이 있을 경우: 예) XX88(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 2개 할당하는 경우의 수는 조합으로 구함: C(4, 2) = 4!/2!(4-2)! = 6
# 경우의 수 x 9 x 9 x 8의 개수: 6 x 9 x 9 x 2 = 972
# 3개의 8이 있을 경우: 예) X888(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 3개 할당하는 경우의 수는 조합으로 구함: C(4, 3) = 4!/3!(4-3)! = 4
# 경우의 수 x 9 x 8의 개수: 4 x 9 x 3 = 108
# 4개의 8이 있을 경우: 예) 8888(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 4개 할당하는 경우의 수는 조합으로 구함: C(4, 4) = 4!/4!(4-4)! = 1
# 경우의 수 x 1 x 8의 개수: 1 x 1 x 4 = 4
import math
total = 0
for n in range(1, 5): # n: 8의 개수, 8이 없는 자리수: 4 - n
cnt = math.comb(4, n)
sum = cnt * 9**(4-n) * n
total += sum
print("total = ", total)
풀이 작성