1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?
8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다.
(※(注記) 예를들어 8808은 3, 8888은 4로 카운팅 해야 함)
음....
10,000 에는 8 이 없으니 무시하고, 1 부터 9999 까지
X X X 8 인 경우 : 1,000개 ( X X X 는 세자리이므로 0 0 0 ~ 9 9 9 까지 천개)
X X 8 X 인 경우 : 1,000개 ( X X X 는 세자리이므로 0 0 0 ~ 9 9 9 까지 천개)
X 8 X X 인 경우 : 1,000개 ( X X X 는 세자리이므로 0 0 0 ~ 9 9 9 까지 천개)
8 X X X 인 경우 ; 1,000개 ( X X X 는 세자리이므로 0 0 0 ~ 9 9 9 까지 천개)
총 4,000 개 아닌가?
0000부터 9999라고 생각하고 4자리숫자가 10000개이므로 들어가는 숫자의개수는 4만개 0부터 9까지 10개의 숫자가 같은 비율로 들어가니 4만을 10으로 나누면 4천!
파이썬 2.7 입니다.
print str(range(1,10001)).count('8')
2014年02月14日 14:00
JAVA
public class CountingEight {
public static void main(String[] args) {
for (int i=0; i<=10000; i++){
searchEight(i);
}
System.out.println("1에서 10,000 사이에 존재하는 8의 개수는? "+count);
}
private static int count = 0;
public static void searchEight(int num){
if (num%10==8) count++;
if (num>10) searchEight(num/10);
}
}
1에서 10,000 사이에 존재하는 8의 개수는? 4000
파이썬 3.5로 풀었습니다.
print(str(list(range(1, 10001))).count('8'))
2016年11月22日 01:24
파이썬은 한줄로 가능하군요!!! @_@ 제 능력으로는 이렇게 밖에.... 하아~~
int count = 0;
for(int i = 1; i < 10001; i++)
{
for(int j = i; j > 0; j /= 10)
{
if(j % 10 == 8)
{
count++;
}
}
}
8이 한번 나올 때
8000 0800 0080 0008
9x9x9x4 2916번
8이 2번 나올 때
8800 8080 8008 0880 0808 0088
9x9x6x2 972번
8이 3번 나올 때
8880 8088 8808 0888
9x4x3 108번
8이 4번 나올 때
8888 4번
8은 4000번 나온다.
2014年09月30日 21:38
int main()
{
int i,j,n,m;
int sum;
sum = 0;
for (i=0; i<10; i++){
for(j=0; j<10; j++){
for (n=0; n<10; n++){
for(m=0; m<10; m++){
if( m == 8 ){sum = sum+1;}
if( n == 8){sum = sum+1;}
if ( j == 8){sum = sum+1;}
if( i == 8 ){sum = sum+1;}
}
}
}
}
printf("1~10000까지 8을 가진 숫자의 갯수는 %d 이다.\n",sum);
}
이제 C 공부하기 시작한 초보입니다. 배운 범위에서는 이렇게 하면 되네요.
2015年12月07日 17:59
Ruby
puts ("1".."10000").to_a.join.count("8")
문자열 Range "1" 부터 "10000" 까지를, Array로 변환, Array를 하나의 문자열로 합치고, "8"이라는 문자를 Count 한 후, 결과를 출력한다.
여러분 루비하세요. 자바가 한문이라면 루비는 한글입니다.
2014年05月05日 14:26
Java로 풀어보았습니다.
각 자리수에 대해 8인지 검사하고 8이면 cnt값을 하나씩 증가시켜서 8의 개수를 구하는 코드입니다.
class Count8 {
public static void main(String[] args) {
int cnt = 0;
for(int i = 1; i < 10000; i++ ) {
if( i % 10 == 8 ) cnt++;
if( (i / 10) % 10 == 8 ) cnt++;
if( (i / 100) % 10 == 8 ) cnt++;
if( (i / 1000) % 10 == 8 ) cnt++;
}
System.out.println("result : " + cnt);
}
}
2014年08月15日 10:13
풀이 작성